我正在嘗試將 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 行?
uj5u.com熱心網友回復:
writerows() 方法需要一個串列串列。一行是一個串列,行是這些串列。
兩種解決方案,取決于你想要什么:
even_numbers = [[2, 4, 6, 8]]
或者
even_numbers = [[2], [4], [6], [8]]
要自動進行后一種轉換,請使用:
rows = [[data] for data in even_numbers]
writer.writerows(rows)
uj5u.com熱心網友回復:
根據檔案,該writeRows方法需要一個行物件串列作為引數。
您還可以在此處查看行物件的定義。
那是:
對于 Writer 物件,行必須是可迭代的字串或數字,對于 DictWriter 物件,必須是將欄位名映射到字串或數字(首先通過 str() 傳遞它們)的字典。
您收到此訊息的原因是它試圖將該串列中的每個 int 本身轉換為一行。它適用于字串的原因是字串本身是可迭代的。但是,我懷疑如果您在像這樣的字串串列中嘗試多位數字,您會得到意想不到的行為:
even_numbers = ['24','45','66','82'] # list of strings
它可能會將每個數字拆分為行中的列,因為它將字串作為行物件讀取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/372440.html
