CSV模块返回BOM对于第一列
问题描述:
我有此格式的CSV文件:CSV模块返回BOM对于第一列
type,type_mapping, style,style_mapping,Count
Residential,Residential,Antique,Antique,109
Antique,Residential,Antique,Antique,48
Apt/Garage,Commercial,Apt/Garage,Apartment,1
我使用的Python csv模块解析它(第3版)。这里是我的代码:
import os
import csv
typeXref = dict()
with open('xref.csv') as csvData:
csvRead = csv.reader(csvData)
headers = next(csvRead)
for index, row in enumerate(csvRead):
typeXref[index] = {key: value for key, value in zip(headers, row)}
print(typeXref)
出于某种原因,我的第一栏仍然返回字节顺序标记\ufeff
在报头中的第一列。
408: {'\ufefftype': 'Residential', 'type_mapping': 'Residential',
' style': 'Antique', 'style_mapping': 'Antique', 'Count': '109'}}
我想这是因为我在打开文件的方式,阅读的内容与csv
模块,或生成文件。
我可以弄清楚如何解码这一个字段,但宁可确保我正确生成文件,或使用csv
模块属性。
答
你要告诉你正在阅读的UTF-8文件,BOM:
with open('xref.csv', encoding='utf-8-sig') as csvData:
....
那么BOM将被剥离
+0
这样做。谢谢! – Dom
你已经使用'开放的(“xref.csv”尝试,encoding ='utf-8')as csvData:'? – PRMoureu
好主意。我只是试过了,我仍然检索相同的BOM。但我怀疑这是沿着这些路线的。 – Dom