度字符(°)编码/解码

时间:2018-02-12 09:35:08

标签: python-3.x python-unicode

我在Windows平台上使用Python 3。 我有一个文本文件,其中包含学位字符(°)

我想阅读整个文本文件,进行一些处理并将其与执行的修改一起写回来。以下是我的代码示例:

with io.open('myTextFile.txt',encoding='ASCII') as f:
for item in allItem:
    i=0
    myData = pd.DataFrame(data=np.zeros((n,1)))
    for line in f:

        myRegex = "(AD"+item+")"
        if re.match(myRegex,line):
            myData.loc[i,0] = line
            i+=1
    myData = myData[(myData.T != 0).any()]
    myData = myData.append(pd.DataFrame(["\n"],index=[myData.index[-1]+1])) 
    myData = myData[0].map(lambda x: x.strip()).to_frame()
    myData.to_csv('myModifiedTextFile.txt', header = False, index = False, mode='a', quoting=csv.QUOTE_NONE, escapechar=' ', encoding = 'ASCII')

然而,虽然我尝试指定编码/解码,但我收到了unicode错误:

'ascii' codec can't decode byte 0xe9 in position 512: ordinal not in range(128)

1 个答案:

答案 0 :(得分:1)

ascii在这里不是很有用,因为它只知道128个字符,你可以在this table中找到它们。请注意,该表中没有学位符号。我不确定你的文件的实际编码是什么 - Unicode和常用的Windows代码页(1250/1252)有degree sign at 0xB0

我假设在你的文件中,位置512处有一个度数符号,它会导致错误。如果是这种情况,您需要更具体地使用encoding参数。找出用于保存文件的代码页/编码。通过查找代码页并在0xE9找到学位符号来确认这一点。

如果位置512处有不同的字符(“é”是一个好的候选者),则只需指定cp1250cp1252cp1257等编码。