是的,是的,我使用xml解析器而不是正则表达式进行权衡,但这似乎是一个非常简单的情况,它适合:
from BeautifulSoup import BeautifulSoup
from urllib import urlopen
tempSite = 'http://www.sumkindawebsiterighthur.com'
theTempSite = urlopen(tempSite).read()
currentTempSite = BeautifulSoup(theTempSite)
Email = currentTempSite.findAll('tr', valign="top")
print Email[0]
目前的结果是:
<tr valign="top">
<td><p>Phone Number:</p></td>
<td> </td>
<td><p>706-878-8888</p></td>
</tr>
我正在尝试删除所有标记(tr,td,p,也会很好)并且结果:
Phone Number: 706-878-8888
我的问题是过度排斥和多行正则表达式,寻找单行输出的答案。
答案 0 :(得分:2)
如果您的结果真的很简单,只要设置了re.DOTALL
标志,以下正则表达式就会在捕获组1中放置“电话号码:”,在捕获组2中放置号码:
.*(Phone Number:).*?([-\d]+).*
然后,您可以使用替换re.sub()
。
\1 \2
这是一个完整的示例,可以返回您想要的内容:
>>> s = """<tr valign="top">
... <td><p>Phone Number:</p></td>
... <td> </td>
... <td><p>706-878-8888</p></td>
... </tr>"""
>>> regex = re.compile(r'.*(Phone Number:).*?([-\d]+).*', re.DOTALL)
>>> regex.sub(r'\1 \2', s)
'Phone Number: 706-878-8888'