将多个Python列表转换为CSV列

时间:2019-02-21 00:04:48

标签: python csv

我的目标是向csv中写入一系列列表,其中每个列表都是一列。

到目前为止,这是我的代码:

rows = list(zip(columns['phase'],columns['start_date']))

with open('date_update.csv','w') as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerows(row);

This is the csv it produces。两个列表的长度相同。当我打印行时,它的开头有一个额外的'),'。但这在您打印两个列表(columns['phase']columns['start_date'])时不存在。

拉链线有问题吗?还是我没有正确将其写入csv文件?

3 个答案:

答案 0 :(得分:0)

您可以使用pd.DataFrame,然后将其保存到csv。例如:

import pandas as pd
columns = {}

columns['phase'] = ['Phase 1','Phase 2', 'Phase 3','Phase 4']
columns['start_date'] = ['August 24 September','August 24 September',
                         'August 24 September', 'August 24 September']

data = list(zip(columns['phase'],columns['start_date']))

df = pd.DataFrame(data = data)

df.to_csv('date_update.csv', index=False, header=False)

将以下数据保存在“ date_update.csv”文件中:

第一阶段,9月24日
第二阶段,9月24日
第三阶段,9月24日
第4阶段,9月24日

答案 1 :(得分:0)

可以使用:

for row in rows:
    writer.writerow(row)

或者:

writer.writerows(rows)

请注意单数和复数形式的使用。 writerows需要一个序列序列。字符串是一个序列,因此传递字符串列表使其可以将字符串用作列序列,并在单独的列中列出每个字符。

还根据csv docs,使用以下任一方法打开传递给csv.writer的文件:

with open('date_update.csv','wb') as f:           # Python 2
with open('date_update.csv','w',newline='') as f: # Python 3

完整示例:

#!python3
import csv

columns = {}
columns['phase']      = ['Phase 1','Phase 2', 'Phase 3','Phase 4']
columns['start_date'] = ['Aug 24, 2018','Sep 25, 2018','Jan 01, 2019','Feb 15, 2019']

rows = zip(columns['phase'],columns['start_date'])

with open('date_update.csv','w',newline='') as f:
    writer = csv.writer(f)
    writer.writerows(rows)

输出:

Phase 1,"Aug 24, 2018"
Phase 2,"Sep 25, 2018"
Phase 3,"Jan 01, 2019"
Phase 4,"Feb 15, 2019"

答案 2 :(得分:0)

作为@ mark-tolonen所写内容的附录,您还可以使用内置csv模块中的DictWriter。

with open('date_update.csv','a') as f:
    writr = csv.DictWriter(f, fieldnames=["phase","start_date"])
    # writr.write_header() # Use only if file is created by operation or is empty
    writr.writerows([{"phase": c["phase"], "start_date": c["start_date"]} for c in columns])