序数不在范围内,但我无法找到它:删除非ASCII字符

时间:2014-08-27 14:13:05

标签: python utf-8 ascii

当我尝试使用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编码

0 个答案:

没有答案