我有一个XML文档,我希望在其中提取特定标签(例如-
)中包含的某些文本<title>Four-minute warning</title>
<categories>
<category>Nuclear warfare</category>
<category>Cold War</category>
<category>Cold War military history of the United Kingdom</category>
<category>disaster preparedness in the United Kingdom</category>
<category>History of the United Kingdom</category>
</categories>
<bdy>
some text
</bdy>
在这个玩具示例中,如果我想通过使用Python 3-中的以下正则表达式代码来提取标签中包含的所有文本,
# Python 3 code using RE-
file = open("some_xml_file.xml", "r")
xml_doc = file.read()
file.close()
title_text = re.findall(r'<title>.+</title>', xml_doc)
if title_text:
print("\nMatches found!\n")
for title in title_text:
print(title)
else:
print("\nNo matches found!\n\n")
它给我XML标签中的文本以及标签。单个输出的示例是-
<title>Four-minute warning</title>
我的问题是,我应该如何在re.findall()或re.search()方法中构建模式,以便跳过和标签,而我得到的只是它们之间的文本。
感谢您的帮助!
答案 0 :(得分:1)
只需在正则表达式中使用捕获组即可(re.findall()
将处理其余的情况)。例如:
import re
s = '<title>Four-minute warning</title>'
title_text = re.findall(r'<title>(.+)</title>', s)
print(title_text[0])
# OUTPUT
# Four-minute warning