【问题标题】:IronPython and xml.etree.ElementTree illegal characters errorIronPython 和 xml.etree.ElementTree 非法字符错误
【发布时间】: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


【解决方案1】:

我通过“重新安装”ElementTree 模块解决了这个问题。从here 下载它,并通过将源代码复制到 ..\IronPython 2.7\Lib\site-packages\ 来安装它。

【讨论】:

  • 这通常是一种非常糟糕的安装方式。有些软件包可以正常工作;其他人可以工作,但有错误或限制或错过优化;其他人根本不会工作。您应该始终在目录中运行ipy64 setup.py install,或者使用一些可以为您提供等效功能的工具(pip、您最喜欢的 IDE 等)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 2016-03-10
  • 2016-04-07
相关资源
最近更新 更多