全部 -
我正在尝试使用
解析以下非常简单的XML文档结构from xml.dom.minidom import parse
XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<list>
<file name="..." url="...">
<words>
word_1
word_2
...
我遇到的问题是XML包含一个我想要作为字符串列表访问的单词列表......而我似乎无法正确理解它。到目前为止,我的代码就是这样:
import sys
from xml.dom.minidom import parse
for file in sys.argv[1:]:
dom = parse( file )
title = dom.getElementsByTagName( 'job_ad' )[0].getAttribute( 'title' )
# This works
words = dom.getElementsByTagName( 'unigrams' )[0].childNodes[0]
# This is NOT a list of strings ...
我想在此代码中迭代数据结构'words'。我知道有更强大的XML模块可用......但是现在我想用显示的模块解决这个问题。
非常感谢任何帮助。
提前致谢并亲切问候 -
专利
答案 0 :(得分:1)
我假设单词在words
节点下列为纯文本,在这种情况下,您只需要从words
节点获取文本并将其拆分,例如。
s="""<?xml version="1.0" encoding="utf-8"?>
<list>
<file name="..." url="...">
<words>
word_1
word_2
</words>
</file>
</list>"""
import sys
from xml.dom.minidom import parseString
dom = parseString(s)
words_text = dom.getElementsByTagName('words')[0].firstChild.nodeValue
words = words_text.split()
print words
输出:
[u'word_1', u'word_2']
答案 1 :(得分:0)
如果您未与'xml.dom.minidom'结婚,则可能需要结帐lxml(http://lxml.de/)
代码如下:
import lxml.etree
doc = lxml.etree.parse( open(file) )
words = doc.findtext('words')
WHOOPS - 我现在看到海报特别要求答案使用'xml.dom.minidom'。对不起,我们使用lxml。你可以无视。
答案 2 :(得分:0)
在您的XML文档中,多个word_X
单词在xml元素中分组。由于它们不是不同的XML元素,因此您无法进行查询。相反,您可以使用正则表达式来解析单个元素字符串
例如:假设您有wordListAsSingleString
包含(如果可以查询):
word_1
word_2
re.split('\s+', wordListAsSingleString)
会为您提供单词列表。
答案 3 :(得分:0)
如果您想将单词作为字符串,请在末尾添加.data:
words = dom.getElementsByTagName( 'unigrams' )[0].childNodes[0].data