ElementTree.ParseError:格式不正确(无效令牌)

时间:2013-04-12 17:06:06

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

我创建了两个应用程序:

  • 将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
  • 用latin-1替换ISO-8859-1无济于事

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

由于解析错误发生在第14443行的第0列,错误由0xc

产生

1 个答案:

答案 0 :(得分:0)

<强>解决方案:

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

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