Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Unicodesv.DictReader解析Python2.7中的UTF-8-BOM文件时,如何从第一个字段名中删除引号字符?_Python_Python 2.7_Csv_Unicode_Python Unicode - Fatal编程技术网

当Unicodesv.DictReader解析Python2.7中的UTF-8-BOM文件时,如何从第一个字段名中删除引号字符?

当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

问题在于,当类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(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月发现的,我没有看到过这篇文章,否则我早就把它链接到这里了。这是因为对这个错误的评论)