发布于2020-02-28 15:15 阅读(1223) 评论(0) 点赞(1) 收藏(2)
我想使用BeautifulSoup在大型文本文档中标识一个拆分点。因此,我制定了一个正则表达式来查找其中出现特定字符串的Tag。问题是,如果我正在搜索的字符串中还有其他格式/子节点,则它不起作用。
t1 = BeautifulSoup("<p class=\"p p8\"><strong>Question-And-Answer</strong></p>")
t2 = BeautifulSoup("<p class=\"p p8\"><strong>Question</strong>-<strong>And</strong>-<strong>Answer</strong></p>")
t1.find(text = re.compile("Question[s]*-And-Answer[s]*", re.IGNORECASE))
>>> 'Question-And-Answer'
t2.find(text = re.compile("Question[s]*-And-Answer[s]*", re.IGNORECASE))
>>> None
输出应该是p
Tag对象。
您在这里遇到的问题是,您要查找的文本strong
在p
节点内被标签分开,因此使用text
参数in 进行正则表达式搜索.find
无效,这只是在BS中实现的方式。
如果您知道文本在p
nodes中,则可以在.find
调用中使用lambda表达式,并对text
每个p
标记的属性运行正则表达式搜索以查找所需的元素:
print(t2.find(lambda t: t.name == "p" and re.search(r'Questions*-And-Answers*', t.text)))
# => <p class="p p8"><strong>Question</strong>-<strong>And</strong>-<strong>Answer</strong></p>
请注意,[s]
这与s
正则表达式中的相同。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/236184/0e0fa8757643bbf372f7/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!