Python 序号不在范围内,但我可以';找不到:删除非ASCII字符

Python 序号不在范围内,但我可以';找不到:删除非ASCII字符,python,utf-8,ascii,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

尝试使用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)
def removeNonAscii(s):
对于s中的i:
如果作战需求文件(i)>128:
sys.stdout.write(“\r{0}”.format(i)+'\n')
sys.stdout.write(“\r{0}”.format(ord(i))+'\n')
返回“.join(如果ord(i)<128,则i代表s中的i)
从输出中删除有问题的字符,并打印出它们是什么。 唯一打印出来的是“á”,序号为160

我在记事本++和Excel中都搜索了它,但都找不到,所以我不知道这是从哪里来的? 我宁愿知道我用removeNonAscii移除了什么,以防它很重要


如果utf-8编码有助于显示生成错误的代码,而不是您为调试错误而编写的代码,那么我正在使用utf-8编码。@Wooble我现在已经包含了代码,最初没有包含它,因为我试图使其尽可能简洁。您的CSV文件采用什么编码?您可能需要先将其解码为
unicode
,然后再将其传递给引发
UnicodeDecodeError
的函数。您输入的文件可能不是ASCII,而是编码的
0xa0
是该编码中的非中断空格。