8

从一个文件中,我取了一行,使用split(). 但我必须将这些列写为输出文件中的制表符分隔值。

可以说我有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])
4

3 回答 3

18

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')
于 2012-06-15T17:05:41.680 回答
6

write()方法将字符串作为其第一个参数(不是可变数量的字符串)。尝试这个:

outf.write(l[1] + l[2] + l[3] + l[4] + l[5])  

或者更好:

outf.write('\t'.join(l) + '\n')
于 2012-06-15T17:04:30.280 回答
0
outf.write('{0[1]}\t{0[2]}\t{0[3]}\t{0[4]}\t{0[4]}\n'.format(l))

将数据写入分隔的文件选项卡。请注意, write 不会自动附加 a \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))

因为这会在您完成或遇到异常时自动为您关闭文件。

于 2012-06-15T17:04:35.883 回答