怎么查看csv⽂件的编码_python学习笔记:read_csv()——
encoding(。。。
前⾔:
前⾔
在使⽤pandas读取csv⽂件时,通常需要指定解码⽅式,最常⽤的是UTF-8。
UTF-8不解释了,国际化编码标准,html现在最标准的编码格式。
但是有时使⽤UTF-8还是会报错,到底是什么原因呢?
请看⼀个案例:
import pandas as pd
file_path=r'E:test_dataAdventureWorksDW-data-warehouse-install-scriptDimAccount.csv'
df = pd.read_csv(file_path,sep="|",encoding="utf-8",header=None,na_values='null',dtype=str)
运⾏后报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
接下来重点来了,请注意看报错语句,它提醒你utf-8不能解码0xff 。
那么0xff 是什么呢?
⾸先思考⼀个问题:既然有这么多编码⽅式,那⽂件打开的时候,windows系统是如何判断该使⽤哪种编码⽅式呢?
答案是 windows 在⽂件头部增加了⼏个字节以表⽰编码⽅式。
python怎么读文件夹下的文件夹三个字节(0xef, 0xbb, 0xbf)表⽰UTF-8;
两个字节(0xff, 0xfe或者0xfe, 0xff)表⽰UTF-16(Unicode);
⽆表⽰GB**。
0xff需要使⽤UTF-16才能解码。
说明0xff需要使⽤UTF-16才能解码
这⾥提⼀下,LE(little-endian)和BE(big-endian)。LE和BE代表字节序,分别表⽰字节从低位/⾼位开始。 我们常接触到的CPU都是LE,所以windows⾥Unicode未指明字节序时默认指的是LE。此处
encoding="utf-16LE" 。
# 接下来,修改解码⽅式为UTF-16LE:
df = pd.read_csv(file_path,sep="|",encoding="utf-16LE",header=None,na_values='null',dtype=str)
执⾏成功。打印第0⾏验证下:
print(df.iloc[0])
还有⼀种更简单的⽅法,如果csv⽂件不⼤,可以⽤记事本打开,查看-状态栏,可以看到⽂件下⽅有编码⽅式:UTF-16LE 。
总结:
总结
使⽤read_csv()时,怎么知道csv⽂件的编码⽅式呢?
⽅法⼀:不妨先试试encoding="UTF-8",如果报错,可以通过分析报错信息获取编码⽅式。
⽅法⼆:⽤记事本打开csv⽂件,查看状态栏,显⽰编码⽅式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论