2017-12-04 17 views
1

辞書を.txtファイルに書き込もうとしています。テキスト文書に複数の値を追加する効率的な方法が見つかりませんでした。txtファイルの辞書

players = {} 
def save_roster(players): 
    with open("Team Roster.txt", "wt") as out_file: 
     for k, v in players.items(): 
      out_file.write(str(k) + ', ' + str(v) + '\n\n') 
    display_menu() 

私は、キーに複数の値を持つ辞書を持っています。うちは、私が目指しています置く

Bryce, <__main__.Roster object at 0x00000167D6DB6550> 

です:プログラムのこの部分は、と私を残し

Bryce, 23, third, 23 
+0

Rosterオブジェクトはどのように見えますか?クラスの '__repr__'メソッドを実装する必要があるかもしれないと思います。 – drsnark

+0

デフ__init __(selfは、名前、年齢、位置、ジャージ): self.name =名前 self.age =年齢 self.position =位置 self.jersey =ジャージ デフSETNAME(自己、名): self.name =名前 デフsetage(自己、年齢): self.age =年齢 デフSETTYPE(自己位置): self.position =位置 デフSETOWNER(自己、ジャージ): 自己。ジャージー=ジャージー def getname(self): return sel f.name def getage(self): return self.age – ActionDubs

+0

クラスで__repr__メソッドを実装しようとしましたか? – drsnark

答えて

0

Pythonは、本質的にオブジェクトを印刷する方法を理解していません。あなたのオブジェクトを文字列として表現する方法をPythonに伝えるには、__str__メソッドを定義する必要があります。それ以外の場合は、表示されている表現にデフォルト設定されます。あなたの場合、

def __str__(self): 
    return str(self.position)+", "+str(self.jersey) 

のようなもの、または印刷したい属性のいずれかを使用してください。

、テキストファイルからの後ろにデータを読み取る:Roster.__init__()が適切に設定され、すなわち、選手オブジェクトが順番にファイルの各行のパラメータを渡すことで初期化されると仮定すると

with open("Team Roster.txt", "r") as in_file: 
    for line in in_file: 
     player = Roster(*(line.split(", ")) 
     #do something with player, like store it in a list 

+0

それで、フォーマットを希望のフォーマットに設定した後、どのようにプロセスを逆にするのですか?私が作成したテキストファイルから同じ情報をプログラムに戻すには? – ActionDubs

+0

@ActionDubs別の質問ですが、私はそれに答えて編集しました。 – colopop

+0

私はこれが別の質問であることを知っています。私はここでもそれに答えることに感謝します。私は取得し続けます:TypeError: 'dict'オブジェクトは呼び出し可能ではありません – ActionDubs

関連する問題