1

関数の戻り値から数値データを次の形式で書き込もうとしています。

[1,2,3,4,5][10,11]
[6,7,8,9,10][13,14]
...

問題は、テキスト ファイルを次の形式にしたいことです。

1,2,3,4,5[::tab::]10,11
6,7,8,9,10[::tab::]13,14
...

現時点で私が使用している

with open(outfilename,'a') as outfile:
    outfile.writelines("%s%s\n"%(major,minor))

助けていただければ幸いです。リスト、テキスト ファイルの読み取りと書き込み、およびデータの特定の書式設定の実現については、いまだに完全に混乱しています。私はいつも不要な [] や括弧で終わります。

4

1 に答える 1

1

リストの要素を使用して文字列を記述し、各要素を,, または必要な区切り文字で結合するだけです。次に、\tそれらの間に a を使用してリストを出力します。

with open(outfilename, 'at') as outfile:

    major = ",".join(str(i) for i in major)
    minor = ",".join(str(i) for i in minor)

    outfile.writelines("%s\t%s\n" % (major, minor))

次の行の背後にある魔法は、実際には非常に単純です。

major = ",".join(str(i) for i in major)

Python はリスト内包表記という名前の機能を提供します。これにより、非常に明確で単純な構文でリストの要素に対してアクションを実行できます。

たとえば、 list がある場合、 listl = [1, 2, 3, 4, 5]を実行して、要素を整数から文字列に変換し、メソッドを呼び出しますstr()

do _something_ with _element_ foreach _element_ in list _l_
          str(element)           for       element in l

これを行うと、結果の各文字列が一度に作成され、次のステートメントにジェネレーターが含まれます。

(str(element) for element in l)

このメソッドjoinは、要素のリストを反復するか、ジェネレーターからこの要素を受け取ることによって機能するため、次のことができます。

delimiter = ","
delimiter.join(str(element) for element in l)

上記の操作が明確になることを願っています。

于 2012-12-23T15:05:47.833 に答える