我正在尝试阅读CSV文件的第一行并将其分配给header
。 CSV文件如下所示:
TIME,DAY,MONTH,YEAR
"3:21","23","FEB","2018"
"3:23","23","FEB","2018"
...
以下是代码:
import csv
with open("20180223.csv") as csvfile:
rdr = csv.reader(csvfile)
header = next(rdr)
print(header)
我希望输出看起来像:
['TIME', 'DAY', 'MONTH', 'YEAR']
然而输出如下:
['TIME', 'DAY', 'MONTH', 'YEAR']
我错过了什么?
答案 0 :(得分:7)
第一个字符是Byte order mark字符。
试试这个:
with open("20180223.csv", encoding="utf-8-sig") as csvfile:
这个建议隐藏在documentation中,但它存在:
在某些地区,通常在开头使用“BOM” UTF-8编码文件;该名称具有误导性,因为UTF-8不是 字节顺序依赖。该标记只是宣布文件是 以UTF-8编码。使用'utf-8-sig'编解码器自动跳过 标记是否存在以读取此类文件。
答案 1 :(得分:0)
在PHP中,您可以这样做以摆脱此字节顺序标记,因为您肯定知道它存在:
dec/jcc