对于每个用户,我都有他参加的事件列表。 例如鲍勃:[事件1,事件2,...]
我想将其写入csv文件中。我创建了一个字典(键 - 用户和值 - 事件列表) 我是用csv写的。以下是示例输出
username, frnds
"abc" ['event1','event2']
其中用户名是第一列,frnds是第二列
这是代码
writer = csv.writer(open('eventlist.csv', 'ab'))
for key, value in evnt_list.items():
writer.writerow([key, value])
当我阅读 csv 时,我没有直接获取列表。但我通过以下方式得到它
['e','v','e','n','t','1','','...]
我还尝试直接在 csv 中写入列表,但在阅读时得到相同的输出。
我想要的是一个单元格中的多个值,这样当我读取一行的列时,我可以获得所有事件的列表。
e.g
colA colB
user1,event1,event2,...
我认为这并不难,但不知何故我不明白。
###阅读我正在以下内容的帮助下阅读它
codereader = csv.reader(open("eventlist.csv"))
reader.next()
for row in reader:
tmp=row[1]
print tmp # it is printing the whole list but
print tmp[0] #the output is [
print tmp[1] #output is 'e' it should have been 'event1'
print tmp[2] #output is 'v' it should have been 'event2'
最佳答案
您必须将值格式化为单个字符串:
with open('eventlist.csv', 'ab') as f:
writer = csv.writer(f, delimiter=' ')
for key, value in evnt_list.items():
writer.writerow([key, ','.join(value)])
导出为
key1 val11,val12,val13
key2 val21,val22,val23
阅读:这里您必须记住,您已将 Python 列表转换为格式化字符串。因此你不能使用标准的csv工具来读取它:
with open("eventlist.csv") as f:
csvr = csv.reader(f, delimiter=' ')
csvr.next()
for rec in csvr:
key, values_txt = rec
values = values_txt.split(',')
print key, values
按预期工作。
关于python - 在 csv 的单个单元格中写入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874965/