Python “我的正则表达式”;出现;在测试仪中工作,但不在实际代码中工作
这是我的密码:Python “我的正则表达式”;出现;在测试仪中工作,但不在实际代码中工作,python,regex,beautifulsoup,python-3.4,Python,Regex,Beautifulsoup,Python 3.4,这是我的密码: gasprices = requests.get("insert url here") soup = BeautifulSoup(gasprices.content) price1 = soup.find("div", class_="sp_p") price1list = re.search('(p[0-9])', str(price1)) price1解析为以下字符串: < div class="sp_p">< div class="p2">&l
gasprices = requests.get("insert url here")
soup = BeautifulSoup(gasprices.content)
price1 = soup.find("div", class_="sp_p")
price1list = re.search('(p[0-9])', str(price1))
price1解析为以下字符串:
< div class="sp_p">< div class="p2"></div>< div class="pd"></div>< div class="p8"></div>< div class="p1"></div></div>
现在,当我在中运行它时,它匹配了“p2”
,“p8”
,和“p1”
,这就是我想要它做的。但是,当我在python3的regex解释器中运行它时,它只匹配“p2”
。我搞砸了什么 将搜索要发生的比赛的第一个实例,因此它获胜;我不会给你所有的火柴
>>> import re
>>> string = """< div class="sp_p">< div class="p2"></div>< div class="pd"></div>< div class="p8"></div>< div class="p1"></div></div>"""
>>> re.search('(p[0-9])', string)
<_sre.SRE_Match object at 0x7fdefc9ee558>
>>> re.findall('(p[0-9])', string)
['p2', 'p8', 'p1']
相反,使用获取所有匹配项
>>> import re
>>> string = """< div class="sp_p">< div class="p2"></div>< div class="pd"></div>< div class="p8"></div>< div class="p1"></div></div>"""
>>> re.search('(p[0-9])', string)
<_sre.SRE_Match object at 0x7fdefc9ee558>
>>> re.findall('(p[0-9])', string)
['p2', 'p8', 'p1']
>>重新导入
>>>string=“”“
>>>重新搜索('(p[0-9]),字符串)
>>>关于findall('(p[0-9]),字符串)
['p2','p8','p1']
此外,您可以让BeautifulSoup
执行此项工作,并查找所有具有类匹配p\d+
正则表达式(p
后跟一个或多个数字)的div
s:
这成功了!非常感谢。我不熟悉正则表达式,我不知道findall方法。非常感谢你!
[<div class="p2"></div>, <div class="p8"></div>, <div class="p1"></div>]
price1.find_all('div', class_=re.compile(r'p\d+'))