【发布时间】:2013-11-03 18:26:46
【问题描述】:
我正在尝试使用 xml.etree.ElementTree.parse() 读取包含 utf8 字符的 XML 文件。使用常规 python (2.7.4) 解释器运行代码时,它工作正常并且我没有收到任何错误,但是当我尝试使用 IronPython 运行相同的代码时,我收到 Syntax error at line 18: illegal character in content 错误。我也尝试过首先使用 codecs.open("file.xml", "r", "utf-8") 打开文件,但收到以下错误 Illegal characters in path
如何在 IronPython 中修复此错误?可以使用替代的 xml 解析器,但我更喜欢在 xml.etree.ElementTree 中解决问题。谢谢。
【问题讨论】:
-
"Illegal characters in path" 听起来像是在抱怨路径名,而不是内容。您的路径名真的只是
"file.xml",还是其中可能包含非 ASCII 字符? -
正如我所写,该文件中包含 utf8 字符。此外,路径中的非法字符与文件有关,而不是路径名。我已经更新了问题以使这一点更清楚。
-
再一次,除非有什么非常错误的地方,“路径中的非法字符”应该不是指的是内容,而是指路径名。最常见的原因是人们在非原始字符串中使用带有非转义反斜杠的 Windows 路径名(例如,
"foo\bar\file.xml"中间有一个退格字符)。我怀疑在这里使用codecs.open(或io.open)实际上是正确的解决方案,但是另一个问题(使用您的路径名)阻止您走得足够远看到它。 -
我使用的是转义路径名
C:\\Users\\username\\Music\\iTunes\\iTunes Music Library.xml。导致问题的字符是강남스타일。再一次,这可以在常规 python 解释器中找到,但在 IronPython 中找不到。
标签: python xml utf-8 ironpython elementtree