在解析前清理Python中的XML文件
我正在使用minidom来解析一个xml文件,但它报错说数据格式不正确。我发现有些页面里有像ไà¸à¹€à¸Ÿà¸¥ &
这样的字符,导致解析器出错。有没有简单的方法可以在开始解析之前清理一下这个文件?现在我正在用正则表达式去掉所有不是字母数字的字符和</>
这些字符,但效果不是很好。
5 个回答
0
看起来你在处理的数据是用某种编码保存的,感觉上像是ASCII编码。正常情况下,XML文件应该是UTF8格式,而SAX(minidom使用的底层解析器)应该能处理这种格式,所以在这个处理过程中可能有些地方出了问题。与其专注于“清理”数据,我建议你先确认一下编码是否正确,并且是否被正确识别。可能是XML指令有问题?你能不能把你的问题编辑一下,显示文件的前几行,特别是开头的<?xml ...
指令?
3
试试这个
xmltext = re.sub(u"[^\x20-\x7f]+",u"",xmltext)
这样做会去掉除了0x20到0x7F范围内的所有东西。
如果你想保留一些控制字符,比如制表符和换行符,可以从\x01开始。
xmltext = re.sub(u"[^\x01-\x7f]+",u"",xmltext)