我有点像业余程序员和这个网站的新手。我已经搜索过这个问题,但是没有在互联网或本网站的其他地方找到它。
我正试图抓住打开和关闭段落html标记(<p>
&amp; </p>
)之间的所有单词。我的findall语句适用于特定在线文章的所有段落中的所有单词,除非有单引号或双引号。完全有可能有更好的方法来做我正在尝试做的事情,或者这个陈述可以很容易地调整,以包括带引号的段落。任何建议将不胜感激!
findall声明:
aText = findall("<p>[A-Za-z0-9<>=\"\:/\.\-,\+\?#@'<>;%&\$\*\^\(\)\[\]\{\}\|\\!_`~ ]+</p>",text)
答案 0 :(得分:1)
>>> t = "<p>there isn't much here</p>"
>>> re.findall(r'<p>(.+?)</p>',t)
["there isn't much here"]
嵌入"
的示例:
>>> t = r"<p>there isn't much \"to go by\" here</p>"
>>> re.findall(r'<p>(.+?)</p>',t)
['there isn\'t much \\"to go by\\" here']
通常+
是一个贪心限定符,通过添加?
到最后我们使它成为非贪婪,它试图实现最小的匹配。所以它会消耗部分字符串,直到 </p>
可以匹配。
答案 1 :(得分:1)
使用像美味汤这样的HTML解析引擎来执行此操作:
from BeautifulSoup import BeautifulSoup
html_doc= """
<p>
paragraph 1
</p>
<p>
paragraph 2
</ap>
<p>
paragraph 3
</p>
"""
soup = BeautifulSoup(html_doc)
soup.findAll('p')