当Unicodesv.DictReader解析Python2.7中的UTF-8-BOM文件时,如何从第一个字段名中删除引号字符?
问题在于,当类UnicodeSV.DictReader分析CSV文件的字段时,当字段包含引号且文件编码为UTF-8-BOM时,第一个字段保留引号字符,所有连续字段都已正确删除 UTF-8-BOM编码CSV文件示例:当Unicodesv.DictReader解析Python2.7中的UTF-8-BOM文件时,如何从第一个字段名中删除引号字符?,python,python-2.7,csv,unicode,python-unicode,Python,Python 2.7,Csv,Unicode,Python Unicode,问题在于,当类UnicodeSV.DictReader分析CSV文件的字段时,当字段包含引号且文件编码为UTF-8-BOM时,第一个字段保留引号字符,所有连续字段都已正确删除 UTF-8-BOM编码CSV文件示例: "Field1","Field2","Field3" content1,content2,content3 Python代码示例: from unicodecsv import DictReader filename = "/tmp/test.csv" with open(file
"Field1","Field2","Field3"
content1,content2,content3
Python代码示例:
from unicodecsv import DictReader
filename = "/tmp/test.csv"
with open(filename, mode='r') as read_stream:
reader = DictReader(read_stream, encoding='utf-8-sig')
print reader.fieldnames
打印值:
['"Field1"','Field2','Field3']
有没有办法让第一个字段与其他字段一样,并删除引号字符?一种方法是自己手动使用BOM表(尽管我认为编写的代码显示了底层库中的实际错误,应该添加到它们的代码中)。使用BOM后,请改用utf-8编解码器
# My test code to write a file with a BOM
import io
filename = "/tmp/test.csv"
with io.open('test.csv', 'w', encoding='utf-8-sig') as f:
f.write(u'''\
"Field1","Field2","Field3"
content1,content2,content3
''')
from unicodecsv import DictReader
with open(filename, mode='r') as read_stream:
# Consume the BOM
read_stream.read(3)
reader = DictReader(read_stream, encoding='utf-8')
print reader.fieldnames
为了完整性。(这是在2017年8月发现的,我没有看到过这篇文章,否则我早就把它链接到这里了。这是因为对这个错误的评论)