如何在Java中将MS Word引号和撇号转换为常规引号和撇号字符?这些角色的unicode号是多少?
"你好吗?"
'你好'
由于Stack Overflow自动修复它们,因此它们在编辑器中的显示方式
至
"你好吗?"
'你好'
我一直在研究解析外部XML文件的代码.其中一些文件非常庞大,高达千兆字节的数据.毋庸置疑,这些文件需要作为流进行解析,因为将它们加载到内存中效率太低,并且经常导致OutOfMemory问题.
我使用了库miniDOM,ElementTree,cElementTree,我目前正在使用lxml.现在我有一个工作的,非常有效的内存脚本,使用lxml.etree.iterparse.问题是我需要解析的一些XML文件包含编码错误(它们通告为UTF-8,但包含不同编码的字符).使用lxml.etree.parse此功能时,可以使用recover=True自定义解析器选项进行修复,但iterparse不接受自定义解析器.(另见:这个问题)
我当前的代码如下所示:
from lxml import etree
events = ("start", "end")
context = etree.iterparse(xmlfile, events=events)
event, root_element = context.next() # <items>
for action, element in context:
if action == 'end' and element.tag == 'item':
# <parse>
root_element.clear()
Run Code Online (Sandbox Code Playgroud)
iterparse遇到错误字符时出错(在这种情况下,它是a ^Y):
lxml.etree.XMLSyntaxError: Input is not proper UTF-8, indicate encoding !
Bytes: 0x19 0x73 0x20 0x65, line 949490, column 25
Run Code Online (Sandbox Code Playgroud)
我甚至不想解码这些数据,我可以放弃它.不过,我不知道有什么办法跳过元素-我想context.next和continue中试/ except语句.
任何帮助,将不胜感激!
更新
一些额外的信息:这是iterparse失败的行:
<description><![CDATA:[musea de …