CSV阅读器会在前几个字符中拾取垃圾

Jos*_*han 6 python csv python-3.x

我正在尝试读取CSV文件的第一行并将其分配给header.CSV文件如下所示:

TIME,DAY,MONTH,YEAR
"3:21","23","FEB","2018"
"3:23","23","FEB","2018"
...
Run Code Online (Sandbox Code Playgroud)

这是代码:

import csv

with open("20180223.csv") as csvfile:
    rdr = csv.reader(csvfile)
    header = next(rdr)
    print(header)
Run Code Online (Sandbox Code Playgroud)

我希望输出看起来像:

['TIME', 'DAY', 'MONTH', 'YEAR']
Run Code Online (Sandbox Code Playgroud)

但是输出看起来像这样:

['TIME', 'DAY', 'MONTH', 'YEAR']
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

the*_*orm 13

第一个字符是字节顺序标记字符.

试试这个:

with open("20180223.csv", encoding="utf-8-sig") as csvfile:
Run Code Online (Sandbox Code Playgroud)

这个建议有点隐藏在文档中,但它存在:

在某些领域,在UTF-8编码文件的开头使用"BOM"也是惯例; 该名称具有误导性,因为UTF-8不依赖于字节顺序.该标记只是宣布该文件以UTF-8编码.使用'utf-8-sig'编解码器自动跳过标记(如果存在)以读取此类文件.