[英]Write a list of integer into csv row-wise
我正在嘗試將 float 或 int 列表逐行寫入 csvfile。
出於某種原因,如果列表由字符串組成,我可以編寫它們
import csv
even_numbers = ['2','4','6','8'] # list of strings
header = ['even numbers']
with open('even_numbers.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(header)
writer.writerows(even_numbers)
但是當有整數時會引發錯誤
import csv
even_numbers = [2,4,6,8] # list of integers
header = ['even numbers']
with open('even_numbers.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(header)
writer.writerows(even_numbers)
錯誤
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-15-ae817296f34e> in <module>
6 writer = csv.writer(csvfile)
7 writer.writerow(header)
----> 8 writer.writerows(Even_list)
Error: iterable expected, not int
我可以通過哪些其他方式逐行向 csv 寫入列表?
writerows() 方法需要一個列表列表。 行是一個列表,行是這些列表。
兩種解決方案,取決於你想要什么:
even_numbers = [[2, 4, 6, 8]]
或者
even_numbers = [[2], [4], [6], [8]]
要自動進行后一種轉換,請使用:
rows = [[data] for data in even_numbers]
writer.writerows(rows)
根據文檔, writeRows
方法需要一個行對象列表作為參數。
您還可以在此處查看行 object的定義。
那是:
對於 Writer 對象,行必須是字符串或數字的可迭代對象,對於 DictWriter 對象,必須是將字段名映射到字符串或數字的字典(首先通過 str() 傳遞它們)。
您收到此消息的原因是它試圖將該列表中的每個 int 轉換為一行本身。 它適用於字符串的原因是字符串本身是可迭代的。 但是,我懷疑如果您在字符串列表中嘗試了多個數字,如下所示:
even_numbers = ['24','45','66','82'] # list of strings
它可能會將每個數字拆分為行中的列,因為它將字符串作為行 object 讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.