我应该从一个文件中提取文本组,每个文件都有一个前十名列表:名称、排名等。您可以在这里看到文件和正则表达式https://regex101.com/r/fXK5YV/1。它在那里工作,你可以看到捕获组
import re
pattern = '''
(?P<list><li\sclass="regular-search-result">(.|\n)*?(?<=\<span class=\"indexed-biz-name\"\>)
(?P<rank>\d{1,2})
(.|\n)*?\<span\>
(?P<name>.+)
\<\/span\>(.|\n)*?alt=\"
(?P<stars>\d\.\d)
\sstar\srating\"(.|\n)*?\<span class=\"review-count rating-qualifier\"\>(\s|\t|\n)*?
(?P<numrevs>\d{1,7})(.|\n)*?\<span\sclass=\"business-attribute\sprice-range\">
(?P<price>\${1,6})
\<\/span\>(.|\n)*?<\/li>)
'''
pattern_matcher = re.compile(pattern, re.VERBOSE)
matches = pattern_matcher.match(yelp_html)
这将打印None
在yelp_html
中肯定有文本
我做错了什么
我看到两个问题:
您没有使用原始字符串(在字符串前面加上
r
),这意味着您的反斜杠将试图表示特殊的内容,而不是字符串的一部分我相信您的多行字符串将尝试将每行之间的换行符和字符串开头的空格匹配到您的正则表达式中(这是您不想要的,因为这不是链接中正则表达式的格式)
相关问题 更多 >
编程相关推荐