我創建了一個 csv 檔案,如下所示:
%%writefile employee2.csv
name, department, birthday month
John Smith, Accounting, November, 6
Erica Meyers, IT, March
現在我想用 DictRead 讀取 csv 檔案的每一行,但它不讀取第二行(John Smith)
import csv
with open('employee2.csv', newline='') as csv_file:
csv_reader = csv.DictReader(csv_file, restkey='day', skipinitialspace=True)
line_count = 0
for row in csv_reader:
if line_count == 0:
print(f'Column names are: {", ".join(row)}')
else:
print(f'{row["name"]} works in the {row["department"]} department, and was born in {row["birthday month"]}.')
line_count = 1
輸出是:
Column names are: name, department, birthday month, day
Erica Meyers works in the IT department, and was born in March.
現在,我有兩個問題: 1- 為什么它不讀取檔案的第二行并將其列印出來?2- 如果我想將 restkey 添加到列印命令中,我該怎么做?
最好的祝福,
uj5u.com熱心網友回復:
使用 時csv.DictReader,它會fieldnames在您開始逐行讀取檔案之前獨立讀取 ( for row in csv_reader:)。無需查看您是否正在閱讀第一行(對于fieldnames)。
要添加restkey到列印,pop它關閉行字典,然后列印彈出的值。看到這個。
import csv
with open('tmp1.csv', newline='') as csv_file:
csv_reader = csv.DictReader(csv_file, restkey='day', skipinitialspace=True)
cols = csv_reader.fieldnames
print('Column names are: ', cols)
for row in csv_reader:
day = row.pop('day', None)
if day != None:
print(f'{row["name"]} works in the {row["department"]} department, and was born on {row["birthday month"]} {day[0]}.')
else:
print(f'{row["name"]} works in the {row["department"]} department, and was born in {row["birthday month"]}.')
印刷:
Column names are: ['name', 'department', 'birthday month']
John Smith works in the Accounting department, and was born on November 6.
Erica Meyers works in the IT department, and was born in March.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391108.html
上一篇:將結果從jq匯出到csv
