我有一个unicode字符串列表,我想写入cvs文件。
with open(archive_dir_today + 'myfile.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(list_diff_1)
这项工作很好,除了它将每个字符都写在一个单独的单元格中。
例如,列表中的第一个条目是"1000F034E2"
我最终在csv文件中有一行看起来像这样:
1,0,0,0,F,0,3,4,E,2
是什么导致了这个问题?
答案 0 :(得分:1)
你使用的是错误的方法; writer.writerows()
期望多行,但您只有一行行。请改用writer.writerow()
(单数,无s
)。
因为writerows()
需要一个行列表,它会将单行中的每一列视为一个列表; unicode字符串的列表是其各自的字符:
>>> list(u'1000F034E2')
[u'1', u'0', u'0', u'0', u'F', u'0', u'3', u'4', u'E', u'2']
那是在这种情况下写出的一行列。
如果您希望列表中的每个项目都是单独的行,那么将它们包装在列表对象中:
writer.writerows([column] for column in list_diff_1)