Python 当\d什么也不返回时,如何告诉re返回所有数字?
这个代码在我的文件里放了mothing 但是这个代码:Python 当\d什么也不返回时,如何告诉re返回所有数字?,python,scrapy,python-3.6,Python,Scrapy,Python 3.6,这个代码在我的文件里放了mothing 但是这个代码: def parse(self, response): for line in response.css('small'): yield { 'seats': line.css('*').get().re('\d') } (相同,但无re) 在文件中放入许多内容,包括许多数字。那么为什么第一个代码不给我数字呢?在第一个示例中,您错误地组合了get()和re()方法。是一种选择器
def parse(self, response):
for line in response.css('small'):
yield {
'seats': line.css('*').get().re('\d')
}
(相同,但无re)
在文件中放入许多内容,包括许多数字。那么为什么第一个代码不给我数字呢?在第一个示例中,您错误地组合了
get()
和re()
方法。是一种选择器
的方法,同时从选择器返回文本数据。因此,您需要将re()
应用于选择器本身:
def parse(self, response):
for line in response.css('small'):
yield {
'seats': line.css('*').get()
}
另外,请注意,使用原始字符串
r'\d+'
作为正则表达式模式,并使用\d+
作为实际模式来返回所有数字。这看起来不像标准Python函数。你用的是什么进口货?你的问题,让它成为我们可以帮助你。。。您正在使用的库是否指定re中的反斜杠不需要字符串转义?这是Python字符串处理的一部分,因此很难绕过。我使用的是scrapy,我设置了标记,很抱歉没有说,如果您正在查找re
的工作方式,\d
将只匹配行中的数字,而不匹配其他内容。我不完全理解您在这里的需求,但您应该研究的可能是模式匹配。也许您需要使用.re(r'(\d+)
'\d'
应该是r'\d'
或'\\d'
。
def parse(self, response):
for line in response.css('small'):
yield {
'seats': line.css('*').re(r'\d+')
}