lst = [['cp1', 'cp2'], ['ac1', 'ac2'], ['12/12/2020', '12/12/2020']]
我想寫一個csv檔案如下
cp1;ac1;12/12/2020
cp2,ac2,12/12/2020
但是 lst 的長度不是固定的,它是動態的(這里是 3,但可以是 N)。lst 中的串列如何具有相同數量的元素(在上面的示例 2 中)。
誰能給我建議。我是 python 新手。
uj5u.com熱心網友回復:
使用 zip 和 csv 模塊:
data = [['cp1', 'cp2'], ['ac1', 'ac2'], ['12/12/2020', '12/12/2020']]
import csv
with open ("test.csv","w", newline="") as f:
writer = csv.writer(f)
writer.writerows(zip(*data))
with open("test.csv") as r:
print(r.read())
輸出:
cp1,ac1,12/12/2020
cp2,ac2,12/12/2020
只要您確保您的內部串列都具有相同的長度,這將起作用。如果一個更短,所有串列都將縮短到該長度。使用itertools.zip_longest來避免這種縮短。
如果您的串列已正確格式化并且不需要在寫入前轉置,請參閱將串列的 Python 串列寫入 csv 檔案。
uj5u.com熱心網友回復:
您可以使用zip內置:
>>> list(zip(*lst))
[('cp1', 'ac1', '12/12/2020'), ('cp2', 'ac2', '12/12/2020')]
這適用于任何大小的串列。
uj5u.com熱心網友回復:
我認為這是您需要的代碼:
lst = [['cp1', 'cp2'], ['ac1', 'ac2'], ['12/12/2020', '12/12/2020']]
output = ""
for inner_list in lst:
output = inner_list[0] ";"
output = output[:len(output) - 2] "\n\n"
for inner_list in lst:
output = inner_list[1] ";"
output = output[:len(output) - 2]
print(output)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/439259.html
