8

ファイルから行を取得し、を使用して行を5列に分割しました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))

分離されたファイルタブにデータを書き込みます。書き込みは自動的にを追加しないことに注意して\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 に答える