1

しばらくの間私を悩ませてきた-おそらく-些細な質問がありますが、それでも答えが見つかりません。私のスクリプトの多くは、いくつかのファイルを読み取り、それらの値を比較して、リストまたは辞書に保存し、そこからある種の出力ファイルを書き込みます。私がいつもしていることは、リストをループして、タブ、コンマ、または改行で区切って、単一の項目を出力に書き込むことです。私がいつも疑問に思っているのは、リストの最後の項目が印刷された後にセパレータが表示されないようにするにはどうすればよいかということです。

次に例を示します。

dict1 = {a: [1,2,3], b: [4,5,6], c: [7,8,9]}
for key in dict1:
    outfile.write(key +": ")
    for item in dict1[key]:
        outfile.write(str(item) +", ")
    outfile.write("\n")

出力は次のようになります。

a: 1, 2, 3, 
b: 4, 5, 6, 
c: 7, 8, 9, 

最後の「、」を回避するにはどうすればよいですか?

4

2 に答える 2

3

str.joinメソッドとリスト内包表記を使用します。

for key, value in dict1.iteritems():
    outfile.write(key +": ")
    outfile.write(', '.join([str(item) for item in value]))
    outfile.write("\n")
于 2013-03-04T13:59:48.027 に答える
1

標準ライブラリのCSVモジュールを使用するのはどうですか?

これに加えて、必要なエスケープを処理します(値の1つにコンマが含まれている場合はどうなりますか?)

(もちろん、一般的な場合としてstring.join(list)、末尾の区切り文字なしで適切に結合するために使用します)

于 2013-03-04T14:02:44.030 に答える