从文件中,我走了一条线,使用split()
将该行拆分为5列。但我必须在输出文件中将这些列写为制表符分隔值。
假设我有l[1], l[2], l[3], l[4], l[5]
...共有5个条目。我如何使用python实现这一目标?而且,我无法将l[1], l[2], l[3], l[4], l[5]
值写入输出文件。
我尝试了这两个代码,两者都不起作用(我正在使用python 2.6):
代码1:
with open('output', 'w'):
print l[1], l[2], l[3], l[4], l[5] > output
代码2:
with open('output', 'w') as outf:
outf.write(l[1], l[2], l[3], l[4], l[5])
答案 0 :(得分:10)
您可以在代表您要写入的文件的with
语句中使用参数。从那里,使用.write()
。这假设l
中的所有内容都是字符串,否则您必须使用str()
包装所有内容。
with open('output', 'w') as f:
f.write(l[1] + "\t" + l[2] + "\t" + l[3] + "\t" + l[4] + "\t" + l[5] + "\n")
或者,更有效率,您可以使用.join()
:
with open('output', 'w') as f:
f.write('\t'.join(l[1:]) + '\n')
答案 1 :(得分:5)
write()
方法将字符串作为其第一个参数(不是可变数量的字符串)。试试这个:
outf.write(l[1] + l[2] + l[3] + l[4] + l[5])
或更好:
outf.write('\t'.join(l) + '\n')
答案 2 :(得分:0)
outf.write('{0[1]}\t{0[2]}\t{0[3]}\t{0[4]}\t{0[4]}\n'.format(l))
将数据写入文件选项卡分开。请注意,写入不会自动附加\n
,因此如果您需要,您必须自己提供。
此外,最好使用with
打开文件:
with open('output', 'w') as outf:
outf.write('{0[1]}\t{0[2]}\t{0[3]}\t{0[4]}\t{0[4]}\n'.format(l))
因为当你完成或遇到异常时,它会自动关闭你的文件。