[英]Reading .csv file with Python and DictReader missing columns
我有以下.csv
文件,我正在嘗試整體閱讀:
---------------------------------------------------------------
#INFO | | | | | |
---------------------------------------------------------------
#Study name | g1 | | | | |
---------------------------------------------------------------
#Respondent Name | name | | | | |
---------------------------------------------------------------
#Respondent Age | 20 | | | | |
---------------------------------------------------------------
#DATA | | | | | |
---------------------------------------------------------------
Row | Timestamp | Source | Event | Sample | Anger|
---------------------------------------------------------------
1 | 133 | Face | 1 | 3 | 0.44 |
---------------------------------------------------------------
2 | 240 | Face | 1 | 4 | 0.20 |
---------------------------------------------------------------
3 | 12 | Face | 1 | 5 | 0.13 |
---------------------------------------------------------------
4 | 133 | Face | 1 | 6 | 0.75 |
---------------------------------------------------------------
5 | 87 | Face | 1 | 7 | 0.25 |
---------------------------------------------------------------
這是我用來打開、讀取文件並打印到終端的代碼:
import csv
def read_csv():
with open("in/2.csv", encoding="utf-8-sig") as f:
reader = csv.DictReader(f)
print(list(reader))
read_csv()
我得到的 output 僅包含.csv
的前兩列:
[{'#INFO': '#Study name', '': ''}, {'#INFO': '#Respondent Name', '': ''}, {'#INFO': '#Respondent Age', '': ''}, {'#INFO': '#DATA', '': ''}, {'#INFO': 'Row', '': 'Anger'}, {'#INFO': '1', '': '4.40E-01'}, {'#INFO': '2', '': '2.00E-01'}, {'#INFO': '3', '': '1.30E-01'}, {'#INFO': '4', '': '7.50E-01'}, {'#INFO': '5', '': '2.50E-01'}]
為什么我的 output 中缺少其他列? 我希望也包括從Row
開始的其他列。 任何方向將不勝感激。 謝謝!
嘗試:
for _ in zip(f, range(5)):
pass
在初始化DictReader
之前。 這應該跳過前 5 行。
import csv
def read_csv():
with open("in/2.csv", encoding="utf-8-sig") as f:
for _ in zip(f, range(5)):
pass
reader = csv.DictReader(f)
print(list(reader))
read_csv()
DictReader
需要一個文件,其中第一行包含列名(每個名稱彼此不同),隨后的行包含數據條目。 如果多個列名只是空字符串,最后一列中的值將分配給返回字典中的鍵''
。
要跳過前五行,您可以這樣寫:
import csv
def read_csv():
with open("in/2.csv", encoding="utf-8-sig") as f:
for _ in range(5):
next(f)
reader = csv.DictReader(f)
print(list(reader))
read_csv()
import csv
def read_csv():
with open("in/2.csv", encoding="utf-8-sig") as f:
for _ in range(5):
next(f)
reader = csv.DictReader(f)
print(list(reader))
read_csv()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.