regex 如何使用Python正则表达式解析HTML中的段落,而不考虑应用的样式

42fyovps  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(106)

我试图创建一个Python函数(使用正则表达式),将HTML中包含'$$'的每个段落替换为字母'1'。我需要应用相同的,即使有一些风格存在于段落,

s = "<p>adsadfsaaadsadsaExample String</p><p>$$</p>"
replaced = re.sub('<p>\$\$</p>', '1',s)
print (replaced)

预期输入:

<p>i have</p> <p style="text-align:justify">$$</p>
<p> asdas jas dafad</p>
<p>$$<p>
<p>asdasd</p>
<p><span>$$</span></p>

预期输出:

<p>i have</p> 1 
<p> asdas jas dafad</p>
1
<p>asdasd</p>
1

请帮

tpgth1q7

tpgth1q71#

import re

pattern = r'\<p.*?\>.*?\<\/p\>'
html_str = '<p>i have</p> <p style="text-align:justify">$$</p><p> asdas jas dafad</p><p>$$</p><p>asdasd</p><p><span>$$</span></p>'
new_html_str = re.sub(pattern, lambda match: "1" if '$$' in match.group() else match.group(),s)
print(new_html_str)

prints - '<p>i have</p> 1<p> asdas jas dafad</p>1<p>asdasd</p>1'

我的回答完全基于你的方法,为了更好的解决方案,我建议解析html和进程。

blpfk2vs

blpfk2vs2#

import re

s = """<p>i have</p> <p style="text-align:justify">$$</p> 
<p> asdas jas dafad</p> 
<p>$$<p> 
<p>asdasd</p> 
<p><span>$$</span></p>"""

result = re.sub(r"<p .*=.*>\$\$.*?</?p>", "1", s)
result = re.sub(r"<p.*>\$\$.*?</?p>", "1", result) 

print(result)

输出量:

<p>i have</p> 1
<p> asdas jas dafad</p>
1
<p>asdasd</p>
1

相关问题