有时候用pandas的read_csv 打开文件的时候看不出什么异常,比如下图
但是一旦使用列名处理数据的时候,就会出现列名错误,但是明明写的没有问题。例如如下所示
那么这时候就要考虑是否有未显示的格式或者和字符,所以我们打印出列名
可以看到有\ufeff
的字符。通过记事本打开文件,发现文件格式是UTF-8 with BOM。
来源百度百科:
UTF-8:以字节为编码单元,它的字节顺序在所有系统中都是一様的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM
字节顺序标记(英语:byte-order mark,BOM)是位于码点U+FEFF的统一码字符的名称。
UTF-8则没有字节顺