簡體   English   中英

Python 3.4.2和csv.DictReader的問題不正確地解析第一個字段名

[英]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,在第一個條目之前我什么也聽不懂,而且我也不知道為什么它不能正確解析。

我也嘗試過:

  • 將第一個條目替換為“日期”
  • 刪除所有空格
  • 刪除所有特殊字符
  • 在DictReader中添加delimiter=','quotechar='"'
  • 嘗試過Python 3.5.0

問題仍然存在,解析后的第一項preceeded ASCII碼239, 187, 191和雙引號。

239, 187, 191是十六進制0xEF,0xBB,0xBF那就是的UTF8表示字節順序標記 (或BOM)。

它可能發生在文本文件中,幾乎所有普通的文本編輯器都知道它,並假設:

  • 它不應該以任何方式顯示
  • 以下文字應為UTF8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM