我收到了一些编码的文本,但我不知道使用了什么字符集.有没有办法使用Python确定文本文件的编码?如何检测文本文件的编码/代码页处理C#.
我试图以一种内存有效的方式解析一个带有lxml的巨大xml文件(即从磁盘懒洋洋地流式传输,而不是将整个文件加载到内存中).不幸的是,该文件包含一些破坏默认解析器的坏ascii字符.如果我设置recover = True,则解析器可以工作,但是iterparse方法不会使用recover参数或自定义解析器对象.有谁知道如何使用iterparse来解析破碎的xml?
#this works, but loads the whole file into memory
parser = lxml.etree.XMLParser(recover=True) #recovers from bad characters.
tree = lxml.etree.parse(filename, parser)
#how do I do the equivalent with iterparse? (using iterparse so the file can be streamed lazily from disk)
context = lxml.etree.iterparse(filename, tag='RECORD')
#record contains 6 elements that I need to extract the text from
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
编辑 - 以下是我遇到的编码错误类型的示例:
In [17]: data
Out[17]: '\t<articletext><p>The cafeteria rang with excited voices. Our barbershop quartet, The Bell \r Tones was …Run Code Online (Sandbox Code Playgroud) 目前,我正在开发一项功能,涉及解析从另一个产品收到的XML.我决定对一些实际的客户数据进行一些测试,看起来其他产品允许来自用户的输入被认为是无效的.无论如何,我仍然需要尝试找出解析它的方法.我们正在使用javax.xml.parsers.DocumentBuilder,我收到的输入错误如下所示.
<xml>
...
<description>Example:Description:<THIS-IS-PART-OF-DESCRIPTION></description>
...
</xml>
Run Code Online (Sandbox Code Playgroud)
正如您所知,描述中的内容似乎是无效的标记(<THIS-IS-PART-OF-DESCRIPTION>).现在,已知此描述标记是叶标记,并且不应在其中包含任何嵌套标记.无论如何,这仍然是一个问题,并产生例外DocumentBuilder.parse(...)
我知道这是无效的XML,但它可以预测无效.有关解析此类输入的方法的任何想法?
所以,
我正在使用XMLWriter根据数据集中的值构建XML字符串.
它根据我指定的设置和条件正确构建xml字符串.
如果数据集中有超过1000条记录,当我尝试构建xml字符串时,我收到上述错误.十六进制0X19是无效字符
我如何通过这个.我花了大约6个小时试图搞清楚.
请帮忙