使用 python 从文本文件中仅获取 xml 数据

get only xml data from text file using python

我有一个文本文件,其中有一些 XML 数据和一些 HTML 数据。两者都以“<”开头。现在我只想提取 XML 数据并将其保存在另一个文件中。我该怎么做?

文件示例:

xyz data:
<note>
<to>john</to>
<from>doe</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

xyz data
<bold>xyz</bold>

text 
text 
text

<bold>xyz</bold>

again XML data

注意:此文件为 .txt 格式。

我不会将您的整个输入视为 XML,而是 HTML 片段。 HTML 可以包含 non-standard 个元素,所以 <note> 等是可以的。

为方便起见,我建议用pyquery (link) 来处理HTML。它的工作方式与 jQuery 几乎相同,因此如果您以前使用过它,应该很熟悉。

很漂亮straight-forward。加载您的数据,将其包装在 "<html></html>" 中,解析它,查询它。

from pyquery import PyQuery as pq

data = """xyz data:
<note>
<to>john</to>
<from>doe</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

xyz data
<bold>xyz</bold>

text 
text 
text

<bold>xyz</bold>

again XML data"""

doc = pq(f"<html><body>{data}</body></html>")
note = doc.find("note")

print(note.find("body").text())

打印 "Don't forget me this weekend!".