2016-11-11 9 views
0

私はPythonで非常に基本的な質問があります。次のリストの項目を分割してテキストファイルに出力したいと思います。Pythonのforループブロックの複数の行

import pandas as pd 
s = ['"9-6": 1', ' "15-4": 1', ' "12-3": 1', ' "8-4": 1', ' "8-5": 1', ' "8-1": 1'] 
print type(s) 
for i in s: 
    j = i.split(',') 
    with open("out.txt","w") as text_file: 
      text_file.write("{}".format(j)) 

ただし、私のコードでは最後の値しか表示されません。明らかに、それはforループブロックの最後の行を取っていません。誰かがどこに間違っているのを指摘できますか?ありがとう!

+0

私は理解していませんなぜあなたは 'j = i.split( '、')'を実行するのでしょうか?配列の各文字列を繰り返してから、各文字列をコンマで区切った部分文字列に分割しますが、いずれの文字列にもコンマはありません。 – mshindal

答えて

1

値を追加していません。あなたは毎回書き直しています。このようにしてみてください。ここでは

with open("out.txt","a+") as text_file: 

は、私が "A +" で "W" を置き換えます。

全コード:あなたも何かを書く前

import pandas as pd 
s = ['"9-6": 1', ' "15-4": 1', ' "12-3": 1', ' "8-4": 1', ' "8-5": 1', ' "8-1": 1'] 
print type(s) 
for i in s: 
    j = i.split(',') 
    with open("out.txt","a+") as text_file: 
     text_file.write("{}".format(j)) 
0

あなたは「W」オプションでout.txtを開くたびに、それは完全にそのファイルを消去しています。 forループの開始前にwith文を置いて、ファイルが1回だけ開くようにする必要があります。

+0

意味があります!ありがとうございました –

0

forループの繰り返しごとに、ファイルの内容を切り捨てます。 "ファイルを空にする"。これは、オープンモードを使用している場合、w以前の反復ですでに作成されているため、Pythonはファイルを暗黙的に切り捨てるためです。

使用[..] [..]

'W'(それがすでに存在する場合はファイルを切り捨て)[ファイルへ]書き込むためである[]:この動作は、Pythonの2.7に記載されています代わりにファイルに追加するオプションa+を使用します。

...open('out.txt' 'w')...

:その本を意味し、どの

[..] '' 追加するために[使用] [..]

:Pythonの2.7 documentionも、このノート次のようになります。

...open('out.txt', 'a')...

関連する問題