我正在使用下面的代码写入文件,但此刻它将所有内容写入新行。
import csv
antigens = csv.reader(open('PAD_n1372.csv'), delimiter=',')
lista = []
pad_file = open('pad.txt','w')
for i in antigens:
lista.append(i[16])
lista.append(i[21])
lista.append(i[0])
for k in lista:
pad_file.write(k+',')
pad_file.write('\n')
如果说我的“lista”看起来像
[['apple','car','red'],['orange','boat','black']]
我希望我的文本文件中的输出为:
apple,car,red
orange,boat,black
我知道我的新行字符位于错误的位置,但我现在知道将它放在哪里,我也将如何从每行的末尾删除逗号?
修改
抱歉,我的“lista”看起来像
[ '苹果', '汽车', '红', '桔子', '船', '黑']
答案 0 :(得分:1)
如果lista
为[['apple','car','red'],['orange','boat','black']]
,则循环中的每个k
都将成为其中一个子列表,因此您需要做的就是加入该子元素的元素-list ,
并将其作为一行输出:
for k in lista:
pad_file.write(','.join(k))
pad_file.write('\n')
修改:如果lista
为['apple, 'car', 'red', 'orange', 'boat', 'black']
并且您希望每行有3个元素,则可以将for
目标更改为列表理解返回适当的子列表:
for k in [lista[x:x+3] for x in xrange(0, len(lista), 3)]:
pad_file.write(','.join(k))
pad_file.write('\n')
还有其他方法可以将列表分成几个块;见this SO question
答案 1 :(得分:0)
看起来您正在处理包含22+列的输入csv文件。为什么不使用csv.writer来重写每一行呢?
一个简短的工作示例:
import csv
# generate an input file
f = open('in.csv','w')
f.write('''\
Col1,Col2,Col3,Col4,Col5
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
''')
f.close()
# open the files (csv likes binary mode)
input = open('in.csv','rb')
output = open('out.csv','wb')
antigens = csv.reader(input)
pad_file = csv.writer(output)
for i in antigens:
pad_file.writerow([i[4],i[2],i[0]])
input.close()
output.close()
“out.csv”包含:
Col5,Col3,Col1
5,3,1
10,8,6
15,13,11