[英]Issue with Python 3.4.2 and csv.DictReader parsing the first fieldname incorrectly
我有一個通過電子郵件獲取的簡單CSV文件,然后嘗試解析它。
test.csv僅包含:
"Time Interval","SubId","Space Id","Space","Imps.","eCPM (€)","Profit"
"2015-11-15","bottomunit","59457","foo.com","9362","1.92","17.97"
.py很簡單(PY3.4.2):
import csv
with open('test.csv') as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
並且輸出是“混亂”:
{'Profit': '17.97', 'Imps.': '9362', '"Time Interval"': '2015-11-15', 'Space': 'foo.com', 'eCPM (€)': '1.92', 'Space Id': '59457', 'SubId': 'bottomunit'}
具體而言,在Time Interval
字段名是因某種原因不能正確解析,但解析為"Time Interval"
。 不幸的是,這個編輯器沒有顯示它,但是在“ Time Inverval”前面有3個額外的ASCII字符。
如ASCII整個"Time Inverval"
看起來像這樣: 239, 187, 191, 34, 84, 105, 109, 101, 32, 73, 110, 116, 101, 114, 118, 97, 108, 34
我已經用Notepad ++檢查了CSV,在第一個條目之前我什么也聽不懂,而且我也不知道為什么它不能正確解析。
我也嘗試過:
delimiter=','
和quotechar='"'
問題仍然存在,解析后的第一項preceeded ASCII碼239, 187, 191
和雙引號。
239, 187, 191
是十六進制0xEF,0xBB,0xBF
那就是的UTF8表示字節順序標記 (或BOM)。
它可能發生在文本文件中,幾乎所有普通的文本編輯器都知道它,並假設:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.