将制表符分隔值写入文件

时间:2012-06-15 17:02:42

标签: python

从文件中,我走了一条线,使用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])

3 个答案:

答案 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))

因为当你完成或遇到异常时,它会自动关闭你的文件。