【问题标题】:Python 3.6. How to iterate over multiple list in a for loop and write them to a CSV File using DictWriter()蟒蛇 3.6。如何在 for 循环中迭代多个列表并使用 DictWriter() 将它们写入 CSV 文件
【发布时间】:2017-11-22 18:01:54
【问题描述】:

我正在尝试遍历多个列表并将它们保存为 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()

"""下面是我无法以所需格式添加这两个列表的地方"""

    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]
                       })

您的帮助将不胜感激!如果您需要其余代码,请告诉我。谢谢!!

【问题讨论】:

  • 两个输入文件的小样本以及输出文件的外观会有所帮助。
  • 你得到这个结果是因为itertools.product() 的工作方式。你能添加更多关于你想要完成的事情的细节吗?

标签: python list csv format export-to-csv


【解决方案1】:

这可以只使用普通的 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。

【讨论】:

  • 非常感谢!这非常有帮助。节日快乐!
猜你喜欢
  • 2016-08-13
  • 1970-01-01
  • 2023-03-25
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2013-03-21
相关资源
最近更新 更多