office中可以存储两种csv文件,我称下图中橙框csv为1号,红框csv为2号
那么怎么判断一个csv文件属于哪一种呢?
-用记事本打开csv文件,右下角显示utf-8就是1号,显示ANSI就是2号
对于1号而言
显然只能使用utf-8进行解码,代码如下
with open(file, encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
附图帮助理解:
图1
对于2号而言
可以用gbk和ansi两种编码进行解码
另外,with open的默认解码器使用的是GBK,所以三种写法均可
# 写法1
with open(file, encoding='gbk') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# 写法2
with open(file) as f:
reader = csv.reader(f)
for row in reader:
print(row)
# 写法3
with open(file, encoding='ansi') as f:
reader = csv.reader(f)
for row in reader:
print(row)
解释一下为什么ansi可以但utf-8却不可以,因为记事本显示的编码格式"ANSI"有别于ASCII,它有可能会包含gbk等uft-8并不兼容的字符。详见: