【问题标题】:Dictionary to a txt file字典到 txt 文件
【发布时间】:2017-12-04 18:45:18
【问题描述】:

我正在尝试将字典写入 .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

【问题讨论】:

  • 名册对象是什么样的?我认为您可能需要为该类实现__repr__ 方法。
  • def __init__(self, name, age, position, jersey): self.name = name self.age = age self.position = position self.jersey = jersey def setname(self, name): self.name = name def setage(self, age): self.age = age def settype(self, position): self.position = position def setowner(self, jersey): self.jersey = jersey def getname(self): return self.name def getage(self): return self.age
  • 你有没有尝试在类中实现 repr 方法?
  • edit您的问题在需要时添加其他详细信息,不要将代码放在 cmets 中。
  • 是的,它确实有帮助。谢谢。

标签: python-3.x dictionary


【解决方案1】:

Python 本身并不理解如何打印对象。您需要定义__str__ 方法以告诉python 如何将您的对象表示为字符串;否则它将默认为您获得的表示。在你的情况下,我可能会选择类似

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

或您要打印的任何属性。

并从文本文件中读回数据:

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

假设 Roster.__init__() 设置得当,即通过在文件的每一行中按顺序传入参数来初始化名册对象。

【讨论】:

  • 那么在我将格式设置为所需格式后,我将如何反转该过程?要将相同的信息从我刚刚创建的文本文件中拉回到程序中?
  • @ActionDubs 一个不同的问题,但我编辑了一个答案。
  • 我知道这是一个不同的问题,我也感谢您在这里回答。我不断得到:TypeError:'dict'对象不可调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
相关资源
最近更新 更多