如何将字符串从 txt 文件转换为整数,请问何时转换为另一个字符串? PYTHON

How to convert strings to ints from txt file, when boud to another string please? PYTHON

我正在尝试为我的游戏创建排行榜。游戏结束后,询问姓名并计算分数。但是,当我将名称和分数写入 leaderboard.txt 文件并尝试再次将它们导入回来时,我无法将数字从字符串转换回 int。我需要将其转换回 int 以便我可以根据获得的最高分数对排行榜进行排序,或者我可以吗?

score = 5
name = "Adam"

file = open("leaderboard.txt", "a+")
file.write(name+" ")
file.write(str(score)+"\n")
file.close()

file = open("leaderboard.txt", "r")

list_of_lists = []
for line in file:
  list_line = line.split()
  list_of_lists.append(list_line)

for x in range(0,len(list_of_lists)):
  if list_of_lists[x][1].isdigit == True:
    x = int(x)

print(list_of_lists)

这不起作用,数字保持为字符串但没有出现错误。我真的不知道我错过了什么。这甚至是将名称和分数写入 .txt 文件的正确方法吗?有没有更好的方法来考虑这个问题?我真的很想得到帮助。

几乎总是最好的做法是将您的代码转换为对代码的其余部分最方便的格式,并尽可能靠近入口点。您的代码希望有一个字符串和一个整数。在将数据添加到 list_of_lists 结构之前,在从文件中读取数据时进行转换:

score = 5
name = "Adam"

file = open("leaderboard.txt", "a+")
file.write(name+" ")
file.write(str(score)+"\n")
file.close()

file = open("leaderboard.txt", "r")

list_of_lists = []
for line in file:
    list_line = line.split()
    list_line[1] = int(list_line[1])  # This is the new code
    list_of_lists.append(list_line)

print(list_of_lists)

这样一来,list_of_lists 中包含的内部数据结构将完全包含程序其余部分所需的内容;无需后续改造。您会注意到我的示例省略了第二个 for 循环;我们在初始读取时处理了转换。

int 是这里的新概念。但是通过在文件读取循环中执行此操作,您可以避免在后续循环中需要执行额外的 post-processing。

作为一个单独的说明,如果输入文件中的一行不符合预期,那么了解您希望发生什么通常是个好主意;输入验证。例如,您可能想要安静地跳过空白行,并且您可能想要向 STDERR 发出警告,然后跳过任何不遵循“string[space]integer”格式的行。