我有一组 XML 文件,我需要读取它们并将其格式化为单个 CSV 文件。为了从 XML 文件中读取,我使用了这里提到的解决方案。
我的代码如下所示:
from os import listdir
import xml.etree.cElementTree as et
files = listdir(".../blogs/")
for i in range(len(files)):
# fname = ".../blogs/" + files[i]
f = open(".../blogs/" + files[i], 'r')
contents = f.read()
tree=et.fromstring(contents)
for el in tree.findall('post'):
post = el.text
f.close()
这给了我cElementTree.ParseError: undefined entity:
在线上的错误tree=et.fromstring(contents)
。奇怪的是,当我在命令行 Python 上运行每个命令时(虽然没有 for 循环),它运行得很好。
如果你想知道 XML 结构,它是这样的:
<Blog>
<date> some date </date>
<post> some blog post </post>
</Blog>
那么是什么导致了这个错误,为什么它不是从 Python 文件运行,而是从命令行运行呢?
更新:阅读此链接后,我检查files[0]
并发现“&”符号出现了几次。我认为这可能是导致问题的原因。当我在命令行上运行相同的命令时,我使用了一个随机文件来读取。