python报错xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 3, column 50

在我需要解析xml文件统计类别数量的时候,出现了这个error;

python报错xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 3, column 50_第1张图片

错误很简单,就是xml里面有非法字符(有的说是编码问题),下面是我的answer:

有病就治,从根上来说把非法字符改掉就好了。但是

我有23000多xml文件,有问题的有14000张,我肯定不能人工去改。但是循环的话,我解析不了它啊!陷入了死循环。

于是,我试了好多打开xml文件的方法,最后找到了一种去修改的方法:

'''用的时候要慎重,会先删除文件'''
import os
input_dir='/home/xys/CloundShiProjects/traffic_light/trafficlight_dect/data/xml/'

filenames = os.listdir(input_dir)
for filename in filenames:
    path = input_dir+filename
    file_front = filename[:-4]
    with open(path, mode='r', errors='ignore') as f:
        lines = f.readlines()
        f.close()
    lines[2]='   '+file_front+'\n'
    with open(path, mode='w', errors='ignore') as f:
        for line in lines:
            f.write(line)
        f.close()

python报错xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 3, column 50_第2张图片

然后就可以用ElementTree进行解析了。

 NOTE1:因为我得非法字符很统一,都在filename,第三行。所以要根据自己具体情况进行修改啊!

NOTE2:用的时候要先建个副本,慎重!因为它会先删除xml的内容然后再写入。

你可能感兴趣的:(DEBUG,xml,python,开发语言,目标检测,人工智能)