【问题标题】:Writing multiple lists of tuples side-by-side to CSV in Python在 Python 中将多个元组列表并排写入 CSV
【发布时间】:2018-05-13 20:04:18
【问题描述】:

在我将数据附加到每个列表中之后,我有一组列表,在我 print(i,j,k) 之后看起来像这样:

print(i) = [('Danny', 'US', '1995')]
print(j) = [('290', 'Technology')]
print(k) = [('Winter', 'Corporate', '90', '20009')]

看起来很简单,但如果我这样做:

writer.writerow(i + j + k)

我的输出如下:

      column 1                   column 2                       column 3

('Danny', 'US', '1995)   ('290', 'Technology')    (Winter', 'Corporate', '90', '20009)

但是,我想要使用 writerow 获取所有这些列表并将它们写入 CSV 并排,不带括号或引用,其中每个列表中的每个元素都在自己的列中,如下所示:

Danny  US  1995  290  Technology  Winter  Corporate  90  20009

我可以使用 writerows(i + j + k) 让每个列表写在自己的列中,但是然后每个列表都写在另一个列表下面而不是并排写。

我的最小化但完整的程序如下所示:

soup = BeautifulSoup(xml_string, "lxml")

with open('./output.csv', 'ab+') as f:
  writer = csv.writer(f, dialect = 'excel')

  for info in data:
    i = []
    j = []
    k = []

    for item1 in p:
      i.append(....stuff with Danny)

    for item2 in b:
      j.append(....things with 290)

    for item3 in n:
      k.append(....info with Winter)

    writer.writerow(i + j + k)

【问题讨论】:

  • 如果ijk是元组,那么i + j + k也应该是一个元组,writerow应该写单独的列……对吗?
  • 但它没有,所以它们不是。也许ijk 是字符串?
  • @HelloToEarch,请将您的程序缩减为能够说明问题的最短的完整程序。请将该简短程序以及您的实际和预期输出复制粘贴到您的问题中。请参阅minimal reproducible example 了解更多信息。
  • 我在上面的编辑中添加了我认为完整但最小的内容!

标签: python list csv row


【解决方案1】:

您的代码应该可以正常工作,因为我看不到您的完整源代码,这是一个类似的示例,可以正确地从您的元组中生成一行。

i = ('Danny', 'US', '1995')
j = ('290', 'Technology')
k = ('Winter', 'Corporate', '90', '20009')


import csv

with open('eggs.csv', 'w') as csvfile:
    writer = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(i+j+k)

CSV 输出:

【讨论】:

  • 有了这个,我现在将我的第一列设为 |('Danny',我的第二列和第三列分别是 'US' 和 '1995'|
  • 列是Danny US 1995 290 Technology Winter Corporate 90 20009 你是说你正在执行我的代码,但你看到的不是相同的
  • 抱歉,我的意思是我没有看到相同的内容。我现在看到|('Danny' 'US' '1995')| |('290' 'Technology')| |('Winter' 'Corporate' '90' '20009')|
  • 当您在文本编辑器Danny,US,1995,290,Technology,Winter,Corporate,90,20009 中以comma 作为分隔符打开它时,这就是您的CSV 文件的样子。在 Python3 和 Python2 中测试
  • 好吧,当我在 Excel 中打开它时,它会给出我上面给出的格式。
【解决方案2】:

这是另一种方式:

import csv

i = ('Danny', 'US', '1995')
j = ('290', 'Technology')
k = ('Winter', 'Corporate', '90', '20009')

with open('./output.csv', 'a+', newline='') as f:
    writer = csv.writer(f, dialect = 'excel')

    i1=tuple()
    j1=tuple()
    k1=tuple()

    for item1 in i1:
    i = i+(item1,)

    for item2 in j1:
        j = j+(item2,)

    for item3 in k1:
        k = k+(item3,)

    dannyData = i+j+k
    print(dannyData)
    writer.writerow(dannyData)

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多