Python 使用ElementTree时出现未定义的实体错误
我有一组XML文件需要读取并格式化为单个CSV文件。为了读取XML文件,我使用了前面提到的解决方案 我的代码如下所示:Python 使用ElementTree时出现未定义的实体错误,python,xml-parsing,elementtree,Python,Xml Parsing,Elementtree,我有一组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
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()
<Blog>
<date> some date </date>
<post> some blog post </post>
</Blog>
这会在tree=et.fromstring(contents)
行中给出错误celementree.ParseError:undefined entity:
。奇怪的是,当我在命令行Python上运行每个命令时(尽管没有for循环),它运行得非常好
如果您想知道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()
<Blog>
<date> some date </date>
<post> some blog post </post>
</Blog>
某个日期
一些博客文章
那么,是什么导致了这个错误,为什么它不是从Python文件运行的,而是从命令行运行的呢
更新:阅读后,我检查了
文件[0]
,发现“&”符号出现了几次。我认为这可能是造成问题的原因。当我在命令行上运行相同的命令时,我使用了一个随机文件进行读取。正如我在更新中提到的,我怀疑有一些符号可能导致了问题。
当我在命令行上运行相同的行时,错误没有出现的原因是我会随机选择一个没有任何此类字符的文件
因为我主要需要
和
标记之间的内容,所以我创建了自己的解析器(如中所建议的)
从操作系统导入listdir
files=listdir(“…/blogs/”)
对于范围内的i(len(文件)):
f=打开(“…/blogs/”+文件[i],'r')
contents=f.read()
seek1=contents.find(“”)
seek2=contents.find(“”,seek1+1)
而(请参见k1!=-1):
post=内容[见K1+5:见K2+6]
seek1=contents.find(“”,seek1+1)
seek2=contents.find(“”,seek1+1)
f、 关闭()
首先,应该是“../blogs/”
是“../blogs”
还是”。/../blogs/“
”?当然,它读取的文件是正确的。我不认为这是个问题。