Python 3.6。如何在 for 循环中迭代多个列表并使用 DictWriter() 将它们写入 CSV 文件
Python 3.6. How to iterate over multiple list in a for loop and write them to a CSV File using DictWriter()
我正在尝试遍历多个列表并将它们保存为 CSV 文件以在电子表格中打开,第一个列表将其值添加到第 1、2 和 3 列,第二个列表将其值添加到列4、5、6。我取而代之的是获得列表 1 的第 1 行 len(list 2) 次数,然后是列表 2 的第二行,依此类推。列表 2 正常打印,然后在列表 1 的第二行最终打印后再次打印。希望我解释得足够好。
ixl_file = open('ixalan.txt', 'r')
ixl_card = []
ixl_price = []
ixl_quantity = []
for line in ixl_file:
info = line.split("|")
ixl_card.append(info[0])
ixl_price.append(info[1])
ixl_quantity.append(info[2])
ixl_file.close()
kal_file = open('kaladesh.txt', 'r')
kal_card = []
kal_price = []
kal_quantity = []
for line in kal_file:
info = line.split("|")
kal_card.append(info[0])
kal_price.append(info[1])
kal_quantity.append(info[2])
kal_file.close()
with open('card_kingdom.csv', 'w', newline='') as ixl:
fieldnames = ['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6']
writer = csv.DictWriter(ixl, fieldnames=fieldnames)
writer.writeheader()
"""Below is where I am having trouble add these two list in the desired format"""
for a,b in itertools.product(range(len(ixl_card)), range(len(kal_card))):
writer.writerow({'Col 1': ixl_card[a],
'Col 2': ixl_price[a],
'Col 3': ixl_quantity[a],
'Col 4': kal_card[b],
'Col 5': kal_price[b],
'Col 6': kal_quantity[b]
})
非常感谢您的帮助!让我知道您是否需要其余代码。谢谢!!
这可以只使用普通的 CSV 编写器来完成,因为您的所有列似乎都按相同的顺序排列:
import csv
with open('ixalan.txt', newline='') as f_ixalan:
ixalan = list(csv.reader(f_ixalan, delimiter='|'))
with open('kaladesh.txt', newline='') as f_kaladesh:
kaladesh = list(csv.reader(f_kaladesh, delimiter='|'))
with open('card_kingdom.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6'])
for p1, p2 in zip(ixalan, kaladesh):
csv_output.writerow(p1 + p2)
您的两个 .txt
文件也可以通过指定 |
作为分隔符使用 csv.reader()
读取。使用 zip()
从两个输入列表中各取一行,然后可以将它们合并并写入输出 CSV。
我正在尝试遍历多个列表并将它们保存为 CSV 文件以在电子表格中打开,第一个列表将其值添加到第 1、2 和 3 列,第二个列表将其值添加到列4、5、6。我取而代之的是获得列表 1 的第 1 行 len(list 2) 次数,然后是列表 2 的第二行,依此类推。列表 2 正常打印,然后在列表 1 的第二行最终打印后再次打印。希望我解释得足够好。
ixl_file = open('ixalan.txt', 'r')
ixl_card = []
ixl_price = []
ixl_quantity = []
for line in ixl_file:
info = line.split("|")
ixl_card.append(info[0])
ixl_price.append(info[1])
ixl_quantity.append(info[2])
ixl_file.close()
kal_file = open('kaladesh.txt', 'r')
kal_card = []
kal_price = []
kal_quantity = []
for line in kal_file:
info = line.split("|")
kal_card.append(info[0])
kal_price.append(info[1])
kal_quantity.append(info[2])
kal_file.close()
with open('card_kingdom.csv', 'w', newline='') as ixl:
fieldnames = ['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6']
writer = csv.DictWriter(ixl, fieldnames=fieldnames)
writer.writeheader()
"""Below is where I am having trouble add these two list in the desired format"""
for a,b in itertools.product(range(len(ixl_card)), range(len(kal_card))):
writer.writerow({'Col 1': ixl_card[a],
'Col 2': ixl_price[a],
'Col 3': ixl_quantity[a],
'Col 4': kal_card[b],
'Col 5': kal_price[b],
'Col 6': kal_quantity[b]
})
非常感谢您的帮助!让我知道您是否需要其余代码。谢谢!!
这可以只使用普通的 CSV 编写器来完成,因为您的所有列似乎都按相同的顺序排列:
import csv
with open('ixalan.txt', newline='') as f_ixalan:
ixalan = list(csv.reader(f_ixalan, delimiter='|'))
with open('kaladesh.txt', newline='') as f_kaladesh:
kaladesh = list(csv.reader(f_kaladesh, delimiter='|'))
with open('card_kingdom.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6'])
for p1, p2 in zip(ixalan, kaladesh):
csv_output.writerow(p1 + p2)
您的两个 .txt
文件也可以通过指定 |
作为分隔符使用 csv.reader()
读取。使用 zip()
从两个输入列表中各取一行,然后可以将它们合并并写入输出 CSV。