当我尝试使用minidom .toprettyxml将CSV转换为KML时遇到错误:
for row in csvReader:
placemarkElement = createPlacemark(kmlDoc, row, order)
documentElement.appendChild(placemarkElement)
kmlFile = open(fileName, 'w')
kmlFile.write(kmlDoc.toprettyxml(' ', newl='\n', encoding='utf-8'))
错误是:
UnicodeDecodeError:'ascii'编解码器无法将字节0xa0解码到位 5:序数不在范围内(128)
我有很多记录,所以决定打印出不属于这个范围的内容,因为它似乎不是0xa0,所以我使用了:
def removeNonAscii(s):
for i in s:
if ord(i) > 128:
sys.stdout.write("\r{0}".format(i) + '\n')
sys.stdout.write("\r{0}".format(ord(i)) + '\n')
return "".join(i for i in s if ord(i) < 128)
从输出中删除有问题的字符,并打印出它们的内容。 唯一打印出来的是“á”,序号为160。
我在Notepad ++和Excel中搜索过这个,但找不到它,所以我不明白这是从哪里来的? 我更愿意通过removeNonAscii知道我要删除的内容,以防它重要
如果有帮助,我正在使用utf-8编码