2017-09-15 99 views
1

我有一個名爲csv.DictReader讀者:轉換csv.DictReader到CSV文件

reader = csv.DictReader(csvfile())  
for row in reader:     
    print(row) 

給我下面的輸出:

{'field1': '23.10', 'field2': '48.70', 'entry_id': '18', 'created_at': '2017-09-10 09:21:43 UTC'} 
{'field1': '23.10', 'field2': '48.30', 'entry_id': '19', 'created_at': '2017-09-10 10:20:35 UTC'} 
{'field1': '23.00', 'field2': '48.50', 'entry_id': '20', 'created_at': '2017-09-10 11:19:29 UTC'} 

我想這DictReader元素寫入一個csv文件。分隔符應該是一個\t和輸出應該是這樣的:

created_at entry_id field1 field2 
2017-09-10 09:21:43 UTC 18 23.10 48.70 
2017-09-10 10:20:35 UTC 19 23.10 48.70 

我試過如下:

with open(Write_File, 'w') as csv_file:                 
    writer = csv.writer(csv_file,delimiter="\t", dialect="excel-tav") 
    for row in reader:                   
     writer.writerow(row) 

沒有結果,我試圖瞭解DictWriter模塊,但我沒有變所需的輸出。

+1

你打算在打印後重復讀者嗎?檢查你的寫循環中是否有任何實際發生的事情 - 如果你迭代了一次讀取器,就沒有什麼可以迭代了。下次再寫一個[MCVE],讓其他人更容易驗證你的代碼的功能。 – pvg

+0

我實際上嘗試迭代閱讀器後,我打印它,我現在知道dos不工作:-)這加上我的困惑 –

回答

1

嘗試使用csv.DictWriter

with open('output_file.csv', 'w', newline='') as csv_file: 
    fieldnames = ['created_at', 'entry_id', 'field1', 'field2'] 
    writer = csv.DictWriter(csv_file, fieldnames, delimiter='\t') 
    writer.writeheader() 
    for row in reader: 
     writer.writerow(row) 
+0

我接近你的建議,但得到了'作家= csv.DictWriter(csv_file ... '部分錯了......謝謝 –