在以下情况下,如何从第一个字段名中删除引号字符unicodesv.DictReader正在分析Python2.7中的UTF8BOM文件吗?

2024-04-19 18:39:53 发布

您现在位置:Python中文网/ 问答频道 /正文

问题是当类unicodecsv.DictReader解析一个CSV文件的字段时,当这些字段包含引号并且文件以UTF-8-BOM编码时,第一个字段将保留引号字符,其中所有连续字段都已正确删除。在

UTF-8-BOM编码的CSV文件示例:

"Field1","Field2","Field3"
content1,content2,content3

Python代码示例:

^{pr2}$

打印值:

['"Field1"','Field2','Field3']

有没有办法让第一个字段像其他字段一样删除引号字符?在


Tags: 文件csv示例编码bom字符引号utf
1条回答
网友
1楼 · 发布于 2024-04-19 18:39:53

一种方法是自己手动使用BOM(尽管我希望编写的代码能够在底层库中演示一个实际的bug,并且应该添加到它们的issues on github)中。在使用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

相关问题 更多 >