【发布时间】:2014-09-15 06:06:06
【问题描述】:
我想使用 shell 或 python 命令获取两个 xml 标记之间的文本。例如输入:
<Name input="sentence">
<Words>
<Z 2="x">I</Z>
<Z 2="x">like</Z>
<Z 2="x">to</Z>
<Z 2="x">eat</Z>
<Z 2="x">food</Z>
</Words>
</Name>
<Name input="sentence">
<Words>
<Z 2="x">Sam's</Z>
<Z 2="x">food</Z>
<Z 2="x">is</Z>
<Z 2="x">best</Z>
</Words>
</Name>
我希望输出是:
I like to eat food
Sam's food best
基本上,标签指定了一个新句子的开头,并且指定了我想用它来重构它的单词。我有很多这样的句子。有什么建议?我正在考虑在 python 中使用 sed 或 re class,但我无法提出解决方案。谢谢!
【问题讨论】:
-
您如何访问这些 xml 标签?它们是否存储在文本文件中?或者它们是否可以在 python 中表示为字符串?附带说明一下,SO 上的大多数人都希望看到您首先尝试使用一些示例代码或至少是伪代码来解决编程问题。
-
是的,它们存储在文本文件中。我正在尝试解决问题,但建议使用哪些工具会非常有用
-
...如果在 Python 中,请使用您选择的 XML 解析库;在 lxml 中,f'rinstance,
tree.xpath('//Name/Words//text()')将返回 Words 标签下的所有文本节点(字符串)。 -
@user3750474 您是否介意我通过将
<Z 2="x">I</Z>更改为<Z x="2">I</Z>甚至更改为<Z>I</Z>来使您的XML 正确XML 文档,因为属性与问题的核心无关?