我的字符编码时间很糟糕。有点理解为什么当我打开我的.txt文件时会发生这种情况:
问题:
这种编码是什么?为什么会这样?
如何重写我的txt文件以使用正常的重音,甚至没有重音和特殊字符?
有没有特殊的库来处理这个问题?我可以创建一个巨大的函数来替换()所有这些字符,但我不知道何时或哪些字符将出现在我未来的txts中。
我的代码:
folder = 'E:\\WinPython\\notebooks\\scripts\\script1\\'
txtFile = folder + 'PROF_SAI_318_210117_310117_orig.txt'
with open(txtFile, 'r') as f:
with open('PROF_SAI_318_210117_310117_clean.txt', 'w') as g:
for line in f:
do_something() # what should I write here to 'clean' my file?
g.write(line)
print("Ok!")
输出摘录:
SPLEONARDO SIM\xc3\x83O ESTARLING
GOFLORESTA S/A A\xc3\x87UCAR E ALCOOL
SPFOCO REPRESENTA\xc3\x87\xc3\x95ES E CONSULTORIA
答案 0 :(得分:1)
看起来您正在使用Notepad ++来显示您的文件。显示的编码类似于cp1252
:
>>> b'COMUNICA\xc7\xc3O M\xc1QUINAS'.decode('cp1252')
'COMUNICAÇÃO MÁQUINAS'
在Notepad ++中,在菜单上选择Encoding->Character sets->Western European->Windows-1252
,您的文件应正确显示。
这是一个转换为UTF-8(您的输出摘录)的示例:
>>> b'SPLEONARDO SIM\xc3O ESTARLING'.decode('cp1252')
'SPLEONARDO SIMÃO ESTARLING'
>>> b'SPLEONARDO SIM\xc3O ESTARLING'.decode('cp1252').encode('utf8')
b'SPLEONARDO SIM\xc3\x83O ESTARLING'
对于您的示例代码,您可以执行以下操作:
with open(txtFile, 'r', encoding='cp1252') as f:
with open('PROF_SAI_318_210117_310117_clean.txt', 'w', encoding='utf8') as g:
for line in f:
g.write(line)
如果您的文件不是太大,您可以这样做:
with open(txtFile, 'r', encoding='cp1252') as f:
with open('PROF_SAI_318_210117_310117_clean.txt', 'w', encoding='utf8') as g:
g.write(f.read())