我的目标是向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文件?
答案 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])