我正在尝试将python字典中的键和值写入csv文件。我得到写输出,但我想格式化它,使它不包含任何制表符或空格。当我尝试时:
with open(datafile, 'w', newline='', encoding='utf8') as csvfile:
datawriter = csv.writer(csvfile, delimiter='\t')
dic = {'2017-03-07': '36939142', '2014-02-19': '13193909'}
for key in dic.keys():
date = key
order_number = dic[key]
row = [date, order_number]
datawriter.writerow(','.join(row))
我在寻找csv文件中的输出。2017-03-07, 36939142. 但是在输出中却是这样的:2 0 1 7-0 3-0 7和顺序号3 6 9 3 9 1 4 2。你知道吗
每个字符之间有空格/制表符。这使得许多excel函数无法使用。你知道吗
如何在csv文件中获得预期的输出?你知道吗
试试这个:
问题出在
delimiter
和调用writerow()
的参数中。csv
模块已经为您处理了列的定界,因此您不需要使用','.join(row)
格式化行。代码中发生的事情是将字符串'2017-03-07,36939142'
传递到函数writerow()
,该函数需要一个列表(如@JordanSinger所述)。然后它将字符串转换成一个列表,这个列表变成['2', '0', '1', '7', '-', etc]
。然后定界符是一个'\t'
,因此csv编写器获取从','.join(row)
创建的字符串的每个字符,并在每个字符之间放置一个制表符(好像每个字符都是自己的列,由制表符分隔)。因此,您需要更改分隔符以及将函数调用更改为writerow
以传递列表,而不是字符串。你知道吗另外,您可以通过将字典解压成
(key, value)
对元组而不是遍历键来减少代码。你知道吗输出:
相关问题 更多 >
编程相关推荐