0

我创建了两个应用程序:

  • 将 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 产生的

4

1 回答 1

0

解决方案:

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

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

于 2013-04-14T15:20:47.463 回答