我不是很精通 python,但从我在这里读到的内容来看,使用 re.escape() 应该可以修复不平衡的括号错误。但它不适用于我的代码。
谁能帮我解释一下?
data_name = get_results(re.search('^(?!<br>).*(?=<br>)', pdf_data.group(0)))
data_name = re.escape(data_name)
示例 html 输出
<span style="....">THING<br>ANOTHER TEXT THING<br></span>
我的代码的主要部分:
# this is the pattern of the entire main span
text_pattern = '(?<=<span style="font-family: BALKHK+Arial,Bold; font-size:13px">(.*?)(?=<br></span></div>)'
def get_title():
# converted_html is the converted html file using pdfminer
for pdf_data in re.finditer(text_pattern, converted_html, re.DOTALL):
data_name = get_results(re.search('^(?!<br>).*(?=<br>)', pdf_data.group(0)))
data_name = re.escape(data_name)
test_list.append(data_name)
return test_list
请您参考如下方法:
我强烈建议使用解析器而不是正则表达式。
import bs4
txt = r'''<span style="....">THING<br>ANOTHER TEXT THING<br></span>'''
soup = bs4.BeautifulSoup(txt)
for span in [span for span in soup('span') if span.attrs['style'] == '''font-family: BALKHK+Arial,Bold; font-size:13px''']:
result = span.next_element
