我在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)
答案 0 :(得分:1)
ascii
在这里不是很有用,因为它只知道128个字符,你可以在this table中找到它们。请注意,该表中没有学位符号。我不确定你的文件的实际编码是什么 - Unicode和常用的Windows代码页(1250/1252)有degree sign at 0xB0
。
我假设在你的文件中,位置512处有一个度数符号,它会导致错误。如果是这种情况,您需要更具体地使用encoding
参数。找出用于保存文件的代码页/编码。通过查找代码页并在0xE9
找到学位符号来确认这一点。
如果位置512处有不同的字符(“é”是一个好的候选者),则只需指定cp1250
,cp1252
或cp1257
等编码。