Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “我的正则表达式”;出现;在测试仪中工作,但不在实际代码中工作_Python_Regex_Beautifulsoup_Python 3.4 - Fatal编程技术网

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+'))