我正在使用scrapy构建一个数据提取,并希望规范化从HTML文档中提取的原始字符串。下面是一个示例字符串:
Sapphire RX460 OC 2/4GB
字符串
请注意,在字符串文字之前的OC
和2
之间有两组空格,每组两个。
Python提供了How do I trim whitespace with Python?中描述的trim,但这不会处理OC
和2
之间的两个空格,我需要将它们折叠成一个空格。
我试过在使用scrapy Selector提取数据时使用XPath中的normalize-space()
,这是可行的,但赋值很冗长,而且向右偏移很大:
product_title = product.css('h3').xpath('normalize-space((text()))').extract_first()
型
有没有一种优雅的方法可以使用Python规范化空白?如果不是一行代码,有没有一种方法可以将上面的行拆分成更容易阅读的内容,而不会引发缩进错误,例如:
product_title = product.css('h3')
.xpath('normalize-space((text()))')
.extract_first()
型
4条答案
按热度按时间h9a6wy2h1#
您可以用途:
字符串
其中
s
是字符串。dwbf0jvd2#
与其使用正则表达式,更有效的解决方案是使用join/split选项,请注意:
字符串
30byixjq3#
公认的答案是规范化空格的正确方法。这是对您关于格式的第二个问题的回答。
您还询问了如何跨多行格式化Python代码而不抛出缩进错误。你可以在Python中使用圆括号来实现这一点。下面是你的问题中的示例代码,为了可读性,它被格式化成几行。
字符串
请注意,这些括号并不创建元组,因为没有逗号。外圆括号仅用于格式化目的。
上面的多行代码完全等同于将所有方法调用链接在一行上。
型
r1zhe5dt4#
你可以使用一个类似下面的函数和正则表达式来扫描连续的空格,并将它们替换为1个空格
字符串
然后改善清洁功能反正你喜欢它