![](/img/trans.png)
[英]How to get read strings from a list(a txt file) and print them out as ints, strings, and floats?
[英]How to load lines from a file into variables that can be either strings, floats, or ints?
我尝试使用int()
和str()
但它给了我一个ValueError
。 我正在制作一个 RPG,您可以在其中使用文本文件保存和加载数据,我希望它从以前的游戏中获取数据(在文本文件中,已经实现)并从特定的行号设置变量,所以你得到你以前的数据。
我的代码是:
f = open(name+".txt",'r')
enter = f.readline()
y = enter[0]
hp = enter[1]
coins = enter[2]
status = enter[3]
y2 = enter[4]
y3 = enter[5]
energy = enter[6]
stamina = enter[7]
item1 = enter[8]
item2 = enter[9]
item3 = enter[10]
equipped = enter[11]
firstime = enter[12]
armorpoint1 = enter[13]
armorpoint2 = enter[14]
armorpoints = enter[15]
upgradepoint1 = enter[16]
upgradepoint2 = enter[17]
firstime3 = enter[18]
firstime4 = enter[19]
part2 = enter[20]
receptionist = enter[21]
unlocklist = enter[22]
armorlist = enter[23]
heal1 = enter[24]
heal2 = enter[25]
heal3 = enter[26]
unlocked = enter[27]
unlocked2 = enter[28]
f.close()
(我没有输入全局,因为它太长了。)当我运行它时,我收到一个错误,说索引超出范围。 如果您想更好地查看,该代码位于https://repl.it/@HamsterCoding/Screen-Testing#screen.py上。
假设您有以下 txt 文件:
1
word
2.5
您面临的第一个问题是文本文件中值的默认类型将是字符串。 因此,文件内容的分类会对您有所帮助。 下面的一段代码将实现这一点:
f = open('1.txt', 'r')
val_int = []
val_float = []
val_str = []
for i, line in enumerate(f):
try:
val = float(line)
if val.is_integer():
val_int.append((i,int(val)))
else:
val_float.append((i,val))
except:
val_str.append((i,line.replace('\n','')))
f.close()
print(val_int) # OUTCOME: [(0, 1)]
print(val_float) # OUTCOME: [(2, 2.5)]
print(val_str) # OUTCOME: [(1,'word')]
用于维护行索引以供将来使用的元组。
您的索引越界,因为 readline() 只读取一行。 您应该使用 readlines() 来获取文本文件中所有行的数组。
文件:
duck
1
c
1.2
代码:
f = open("duck.txt")
enter = f.readlines() # Changed from readline to readlines
y = enter[0].replace("\n", "") # .replace replaces all newlines ("\n") with empty strings
hp = enter[1].replace("\n", "")
coins = enter[2].replace("\n", "")
status = enter[3].replace("\n", "")
print(enter)
print(y)
print(int(hp)) # cast str to int
print(coins)
print(float(status)) # cast str to float
Output:
['duck\n', '1\n', 'c\n', '1.2']
duck
1 # int
c
1.2 # float
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.