簡體   English   中英

在Python中將多個元組列表並排寫入CSV

[英]Writing multiple lists of tuples side-by-side to CSV in Python

在將數據追加到每個列表中之后,在打印(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)

您的代碼應該可以正常工作,因為我看不到完整的源代碼,這是一個類似的示例,可以從您的元組中正確生成一行。

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輸出:

在此處輸入圖片說明

這是另一種方式:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM