【问题标题】:ElementTree.ParseError: not well-formed (invalid token)ElementTree.ParseError:格式不正确(无效标记)
【发布时间】:2013-04-05 07:38:10
【问题描述】:

我创建了两个应用程序:

  • 将 csv(以 latin-1 编码)转换为 xml

    import xml.etree.ElementTree as xml
    xml.ElementTree(xmlData).write(xmlFile, encoding='ISO-8859-1')
    
  • 将以前的xml加载到我的数据库(mysql)

    • 没有解析器

      from xml.etree import ElementTree as etree
      etree.parse(xmlFile)
      
    • 解析器

      from xml.etree import ElementTree as etree
      myparser = etree.XMLParser(encoding='ISO-8859-1')
      etree.parse(xmlFile, parser=myparser)
      

加载 CSV 文件并将其转换为 XML 文件有效。

问题:我无法将 XML 文件加载/解析到 Elementree 中

错误信息:

    "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/xml/etree/ElementTree.py",    line 1726, in parse
parser.feed(data)
    xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 14443, column 0

注意:

  • 每个文件都以 latin-1/ISO-8859-1 编码
  • CSV 文件的大小约为 1GB
  • 我使用python v3.3
  • 将 ISO-8859-1 替换为 latin-1 没有帮助

更新: 第 14443 行以(十六进制)开头:0xc 0x44 0x4c 0x56 0x36 0x32 ...

由于第 14443 行第 0 列出现解析错误,因此错误是由 0xc 产生的

【问题讨论】:

  • 了解第 14443 行的内容会有所帮助...

标签: csv encoding python-3.x xml-parsing


【解决方案1】:

解决方案:

tr -dc '[\011\012\015\040-\176\200-\377]' < input.xml > output.xml

这不是最佳解决方案,因为我们创建了另一个(大)文件。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2016-05-04
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多