【问题标题】:ExpatError: no element found - Python scriptExpatError:未找到元素 - Python 脚本
【发布时间】:2012-05-22 13:06:32
【问题描述】:

使用 OS X 10.6.8、libxml 2-2.7.8、libxslt-1.1.26 和 python 2.6,我正在尝试运行此处链接的 tumblrRestore.py 脚本:

https://github.com/hughsaunders/Tumblr-Restore/blob/master/tumblrRestore.py

它运行成功并在崩溃前恢复了 76 个帖子。

但是在第二次运行时,我得到了一个 ExpatError: no element found,并且一直无法成功运行它——它现在总是产生同样的错误。错误文字:

Tumblr Restore
Traceback (most recent call last):
File "tumblrRestore.py", line 264, in <module>
cli.start()
File "tumblrRestore.py", line 232, in start
bp.parse()
File "tumblrRestore.py", line 51, in parse
postelement=ElementTree.fromstring(xml_string)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/etree/ElementTree.py", line 964, in XM
return parser.close()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/etree/ElementTree.py", line 1254, in close
self._parser.Parse("", 1) # end of data
xml.parsers.expat.ExpatError: no element found: line 1, column 0

我想知道我是否有错误或竞争或过时的 python 或 lxml 版本,尽管这仍然不能解释为什么脚本成功运行一次。

完全新手,任何建议表示赞赏。

【问题讨论】:

  • 检查文件的编码。也许你有一个 BOM 标记或一些丑陋的东西。错误消息听起来对xml_string 中的第一个字符不满意。
  • 谢谢,我尝试接收为 Unicode UTF-8 无 BOM,但仍然收到完全相同的错误。另外我仍然想知道为什么它第一次运行正确,但在随后出现时却不能?

标签: python elementtree expat-parser


【解决方案1】:

检查 BackupParser 类的 extract_xml_string 方法。它肯定会返回空字符串,因为您的 begin_re 正则表达式与 xml 标头不匹配。

尝试下一个:

begin_re = re.compile("<\? xml .*\?>")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2020-06-17
    • 2021-12-01
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多