我有以下列表
mylist = ['a','b','c' ....]
list.append('a')
list.append('b'+'\r\n')
list.append('c')
CSV生成
with open(csvFile, "w",) as output:
writer = csv.writer(output, delimiter='\r\n')
writer.writerow(list)
如何确保在每个第2个元素后插入新行?默认情况下,'\r\n'
用作行终止符,所以我尝试在构建列表时添加'\r\n'
添加每个第二个字符串的结尾但没有运气,csv总是在一行中生成
答案 0 :(得分:1)
如果您想使用分隔符加入字符串,请使用str.join()
:
'\r\n'.join(mylist) + '\r\n'
但您确实想使用csv
module来编写CSV文件:
import csv
with open(outputfilename, 'wb') as ofh:
writer = csv.writer(ofh)
for value in mylist:
writer.writerow([value])
请注意writerow()
需要列的列表,因此如果输入列表中的每个字符串都是一行,请将其包装在列表中。
默认情况下,CSV模块使用\r\n
作为行分隔符:
>>> import csv
>>> from StringIO import StringIO
>>> ofh = StringIO()
>>> writer = csv.writer(ofh)
>>> writer.writerow(['a', 'b', 'c'])
>>> ofh.getvalue()
'a,b,c\r\n'
如果您尝试将列表中的每两个值写为一行,请执行以下操作:
with open(outputfilename, 'wb') as ofh:
writer = csv.writer(ofh)
for i in range(0, len(mylist), 2):
writer.writerow(mylist[i:i+2])
用于简单方法,或生成列表以具有嵌套结构:
[['a', 'b'], ['c', 'd'], ...]
或在生成时编写行。
答案 1 :(得分:0)
你可以这样做:
import csv
mylist=[chr(i) for i in range(65,86)] #['A', 'B', ... 'T', 'U']
with open(ur_file,'w') as fout:
writer=csv.writer(fout)
for line in (mylist[i:i+2] for i in range(0,len(mylist),2)):
writer.writerow(line)
制作如下文件:
A,B
C,D
E,F
G,H
I,J
K,L
M,N
O,P
Q,R
S,T
U
答案 2 :(得分:0)
显然,您尝试生成一个包含两列的csv文件。
首先构建数据以匹配文件的结构。 e.g。
mylist = [('a', 'b'),
('c', 'd'),
...
]
然后您可以添加列和行分隔符。
'\n'.join( ','.join(row) for row in mylist )
如果您还希望文件的最后一行以'\ n'结尾,请使用
''.join( ','.join(row) + '\n' for row in mylist)
然而,正如其他人所说,使用csv模块可能更好 负责引用列分隔符等。 此外,当您使用csv模块时,我认为如果您的数据是结构化的,则更加清晰 适当地,即作为行列表。
顺便说一句,我使用'\ n'而不是'\ r \ n',因为如果你在文本模式下写入文件opend,python会将'\ n'替换为'\ r \ n',如果它是平台默认(即在Windows上)
答案 3 :(得分:0)
list = [a,b,c,d,e,f,g,h]
for x in list:
with open(csvFile, "w",) as output:
index = 0
writer = csv.writer(output)
writer.writerow(list[index:index + 2)
# however many values you want to write as one line
index += 2