2017-02-25 15 views
-1

への整数のタプルを含むリストを書く、私は整数を含むタプルを出力し、このようなリストに追加するプログラムがあります。Pythonの3 - オーケーCSV

[(0,98,7), (437, 563, 128), (82, 45, 221)...] 

を私がするタプルを書きたいんですタプルに格納されたリストとして「値」を使用してこのような.WRITE()関数を使用してファイル:

0,98,7 
437, 563, 128 
82, 45, 221 
... 

output=open("output.txt","w") 
for v in range(len(values)): 
    print(values[v]) #so it prints each value in the shell for error check 
    output.write(values[v]) 

期待される結果は次のようにその内容をテキストファイルであります

問題は、ファイルにタプルを書き込めないということです。それは文字列を要求する。私は.join()関数とlist()関数を使用して、値リスト内の文字列またはリストのいずれかにタプルを変更しようとしました。誰も私はこの問題を解決する方法を知っていますか?本当にありがとう。

+0

'join 'で使用したコードは何ですか?また、それが動作しないようにするエラーは何ですか?また、 'open( 'output.txt'、 'w')をoutput_file:...'として使用することを検討してください。エラーがあってもファイルを閉じるので安全です – darthbith

+0

1. 'for v in values: '。 2.これは 'output.write(str(v))'でしょう。 3.ファイルを閉じることを忘れないでください(最後に)。 – Elmex80s

+0

ありがとうございました。私は間違った場所を探していて、間違った答えを得ていたと思います...私は比較的Pythonに精通しており、CSVモジュールについては決して読んでいません。本当にありがとう;情報は非常に便利です! –

答えて

2

これはcsvモジュールがために作られている正確に何されています

誰かがすでに csv方法を示すかのように見て
import csv 

with open('output.txt','w',newline='') as fou: 
    cw = csv.writer(fou) 
    cw.writerows(values) 
+1

はい! '、 '。join(strings)'はCSVではありません。独自のシリアライザ/パーサを動かすのはひどい考えです。モジュールを使用します。 – ShadowRanger

+0

ありがとう、@DSM。更新された答え。 – bernie

+0

@Bernieよろしくお願い致します!あなたの両方! –

0

、ここではなしです。

s = [(0,98,7), (437, 563, 128), (82, 45, 221)] 
with open('out.txt', 'w') as f: 
    for e in s: 
     f.write('%s\n' % ','.join(str(n) for n in e)) 

ループで書き出します。結合に渡されたコレクションの各要素は文字列でなければなりません。それぞれの値を変換し、結合を使用してコンマ区切りの行にします。

結果

[email protected]:~$ cat out.txt 
0,98,7 
437,563,128 
82,45,221 

は、あなたが一貫し出力のコンマの後にスペースを持っていけない注意してください。最初の行のように私の外出をした場合、それらなし。結合文字列を変更したい場合','.join(etc...) =>', '.join(etc...)

関連する問題