python 转换编码:LookupError:未知编码:ansi
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22279413/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
python Convert Encoding:LookupError: unknown encoding: ansi
提问by BruceZhong
Because of my encode of cdv file is "utf-8",so when I open it with excel it will cause distortion,and when I convert it to then standard encode "ANSI",I get the error:
由于我的cdv文件的编码是“utf-8”,所以当我用excel打开它时会导致失真,当我将其转换为标准编码“ANSI”时,出现错误:
code:
代码:
import chardet
def convertEncoding(from_encode,to_encode,old_filepath,target_file):
f1=file(old_filepath)
content2=[]
while True:
line=f1.readline()
content2.append(line.decode(from_encode).encode(to_encode))
if len(line) ==0:
break
f1.close()
f2=file(target_file,'w')
f2.writelines(content2)
f2.close()
convertFile = open('4321.csv','r')
data = convertFile.read()
print chardet.detect(data)
if chardet.detect(data)['encoding']=='utf-8':
convertFile.close()
convertEncoding(chardet.detect(data)['encoding'], "ansi", "4321.csv", "4321_bak.csv")
error:
错误:
{'confidence': 0.99, 'encoding': 'utf-8'}
Traceback (most recent call last):
File "/Users/allenlee/Desktop/convert/convert.py", line 24, in <module>
convertEncoding(chardet.detect(data)['encoding'], "ansi", "4321.csv", "4321_bak.csv")
File "/Users/allenlee/Desktop/convert/convert.py", line 8, in convertEncoding
content2.append(line.decode(from_encode).encode(to_encode))
LookupError: unknown encoding: ansi
[Finished in 0.1s with exit code 1]
Thanks for your concern.
感谢你的关心。
采纳答案by falsetru
There's no ansiencoding in Python Standard Encodings.
ansiPython Standard Encodings 中没有编码。
Choose appropriate encodings from following link: Standard Encodings
从以下链接中选择适当的编码:标准编码
回答by BruceZhong
OK,I find the answer.Thanks to @falsetru
好的,我找到了答案。感谢@falsetru
#coding:utf-8
import chardet
def convertEncoding(from_encode,to_encode,old_filepath,target_file):
f1=file(old_filepath)
content2=[]
while True:
line=f1.readline()
content2.append(line.decode(from_encode).encode(to_encode))
if len(line) ==0:
break
f1.close()
f2=file(target_file,'w')
f2.writelines(content2)
f2.close()
convertFile = open('1234.csv','r')
data = convertFile.read()
convertFile.close()
convertEncoding(chardet.detect(data)['encoding'], "utf-8", "1234.csv", "1234_bak.csv")

