Python 为什么在我写入CSV时,间距会变小?
我正在尝试使用python创建csv。在每一行中,我希望第一个单元格是问问题的人,第二个单元格是回答问题的人,第三个单元格是发布答案的时间。我只是创建一个简单的列表,其中列表的每个元素都是一个单元格,这意味着列表如下所示:Python 为什么在我写入CSV时,间距会变小?,python,list,csv,Python,List,Csv,我正在尝试使用python创建csv。在每一行中,我希望第一个单元格是问问题的人,第二个单元格是回答问题的人,第三个单元格是发布答案的时间。我只是创建一个简单的列表,其中列表的每个元素都是一个单元格,这意味着列表如下所示: Jan Janet 3/4/05 Jason John 3/6/05 ... 但我的输出是每个单元格一个字母,而不是一个单词 这是我的密码: import csv import collections from collections import defaultdict
Jan Janet 3/4/05
Jason John 3/6/05
...
但我的输出是每个单元格一个字母,而不是一个单词
这是我的密码:
import csv
import collections
from collections import defaultdict
edgelist = []
csv.field_size_limit(1600000)
f = open('/Users/samuelfinegold/Documents/harvard/edXresearch/snaCreationFiles/time_series/time_series.csv','rU')
reader = csv.DictReader(f, delimiter=',')
if line['types'] == 'Question':
#print 'T'
source = line['author_id']
else:
edgelist.append(source + " " + line['author_id'] + " " + line['time'])
with open("/Users/samuelfinegold/documents/harvard/edxresearch/snacreationfiles/time_series/connections_times_series_ex.csv", "w") as the_file:
csv.register_dialect("custom", delimiter=",", skipinitialspace=True)
writer = csv.writer(the_file, dialect="custom")
writer.writerows(edgelist)
the_file.close()
f.close()
如何获得每个单元格都有一个单词而不是一个字母的csv?edgelist应该是列表列表(或元组列表),而不是字符串列表。尝试将
edgelist.append()
行更改为以下内容:
edgelist.append([source, line['author_id'], line['time']])
您当前正在获取列中的每个字母,因为当您将行写入csv文件时,每个元素都是一列,因此需要一个iterable。如果试图将字符串作为行写入,则该字符串中的每个字母都将被解释为单独的列。这意味着每一行都应该是一个列表,因此writer.writerows()
需要一个列表。.writerows()需要一个序列列表;列表或元组的列表,实际上,但字符串也是序列
将元组附加到edgelist
:
edgelist.append((source + " " + line['author_id'] + " " + line['time'],))
因为字符串也是序列,是单个字符的序列,所以您可以看到您的Jan Janet 3/4/05
输入被拆分为单独的单元格
你真正想要的是csv
将你的价值观分开;如果需要以空格分隔的列表,请使用:
edgelist.append((source, line['author_id'], line['time'],))
并告诉csv.writer()
使用空格作为分隔符:
csv.register_dialect("custom", delimiter=" ", skipinitialspace=True)
这将把整个字符串如Jan Janet 3/4/05
放入一个单元格。@F.J:当然,但OP就是这么做的。不是以最好的方式,但仍然是。