92670


リストの内容をカンマ区切りでテキストに出力するには  
どの様にすればよいのでしょうか？

`["犬", "ネコ", "豚"]` というリストを以下の様にテキストに書き込みたいです。

[code]

    犬,ネコ,豚
    
[/code]

下記コードを実行すると

[code]

    str_li = ["犬", "ネコ", "豚"]
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        for x in str_li:
            f.write(x)
    
    
[/code]

実行結果（test.txt）

[code]

    犬ネコ豚
    
[/code]

[code]

    with open('test.txt', 'w', encoding='utf-8') as f:
        for x in str_li:
            new_x = ",".join(x) # joinで連結
            f.write(new_x)
    
    
[/code]

以下の様になってしまいます。

[code]

    犬ネ,コ豚
    
[/code]


CC BY-SA 4.0
2022-12-09T06:43:03.787
92662
2022-12-10T04:10:59.507
2022-12-09T09:24:47.523
3060
question
python python3
Python でリストをカンマ区切りで出力したい


ループで処理する必要は恐らくなくて、事前に連結した文字列を作成してそのまま書きこめば良さそうです。

**例:**

[code]

    str_li = ["犬", "ネコ", "豚"]
    new_x = ",".join(str_li)
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(new_x)
    
[/code]


CC BY-SA 4.0
2022-12-09T06:50:38.087
92663
2022-12-09T10:01:36.110
2022-12-09T10:01:36.110
3060
3060
92662
answer


joinは結合後の文字列を返すので、forでリストの中身を取り出さなくてもよいです。

[code]

    str_li = ["犬", "ネコ", "豚"]
    
    f = open('test.txt', 'w', encoding='utf-8')
    f.write(",".join(str_li))
    f.close()
    
[/code]

withを使ってファイルの閉じ忘れをなくしたい場合は、

[code]

    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(",".join(str_li))
    
[/code]

となります。


CC BY-SA 4.0
2022-12-09T06:51:21.040
92664
2022-12-09T06:51:21.040
5246
92662
answer

[code]

    str_li = ["犬", "ネコ", "豚"]
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        print(*str_li, sep=',', file=f)
    
[/code]

**実行結果**

[code]

    $ cat test.txt
    犬,ネコ,豚
    
[/code]


CC BY-SA 4.0
2022-12-09T08:28:39.110
92666
2022-12-09T08:28:39.110
47127
92662
answer


念のため，数値リストの場合も加えました。

[code]

    str_li = ['犬', 'ネコ', '豚']
    num_li = [1, 2, 3]
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(','.join(str_li) + '\n')
        f.write(','.join([str(x) for x in num_li]) + '\n')
    
    with open('test.txt', 'r', encoding='utf-8') as f:
        print(f.read(), end='')
    
[/code]

[code]

    犬,ネコ,豚
    1,2,3
    
[/code]

（追記）  
内包表記を使わない記述は下記になります。

[code]

    num_li = [1, 2, 3]
    
    num2str_li = []
    for x in num_li:
        num2str_li.append(str(x))
    
    with open('test.txt', 'w', encoding='utf-8') as f:
        f.write(','.join(num2str_li) + '\n')
    
[/code]


CC BY-SA 4.0
2022-12-09T15:28:18.663
92670
2022-12-10T04:10:59.507
2022-12-10T04:10:59.507
54588
54588
92662
answer