繁体   English   中英

如何从列表(txt 文件)中读取字符串并将它们打印为整数、字符串和浮点数?

[英]How to get read strings from a list(a txt file) and print them out as ints, strings, and floats?

我已经尝试了一切来完成这项工作。 我要做的是获取一个文件,为每一行分配一个变量,然后设置变量的类型。 它在列表中将其读取为 [ 和 ' 是行号,我不知道该怎么做。 我在文件中也有需要保存的列表。 我的错误是: ValueError: invalid literal for int() for base 10: '['

我的代码是:

def load_data():
f = open(name+".txt",'r')
enter = str(f.readlines()).rstrip('\n)
print(enter)
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]
float(int(y))
int(hp)
int(coins)
str(status)
float(int(y2))
float(int(y3))
int(energy)
int(stamina)
str(item1)
str(item2)
str(item3)
str(equipped)
int(firstime)
int(armorpoint1)
int(armorpoint2)
int(armorpoints)
int(upgradepoint1)
int(upgradepoint2)
int(firstime3)
int(firstime4)
list(unlocklist)
list(armorlist)
int(heal1)
int(heal2)
int(heal3)
f.close()
SAMPLE FILE:
35.0
110
140
Sharpshooter
31.5
33
11
13
Slimer Gun
empty
empty
Protective Clothes
0
3
15
0
3
15
0
1
False
False
['Slime Slicer', 'Slimer Gun']
['Casual Clothes', 'Protective clothes']
4
3
-1
{'Protective Clothes': True}
{'Slimer Gun': True}

我认为如果您以这种方式读取文件会更好,它首先读取并删除空格,然后拆分为行。 然后您可以为每一行设置一个变量(您还需要将更改变量类型的结果设置为变量)。

对于列表,您可能需要 function 从字符串中提取列表。 但是,如果您没有预料到安全漏洞,那么使用eval()应该没问题。

def load_data():
    f = open(name+".txt",'r')
    content = f.read().rstrip()
    lines = content.split("\n")

    y = float(int(enter[0]))
    hp = int(enter[1])
    coins = int(enter[2])
    status = enter[3]
    # (etc)

    unlocklist = eval(enter[22])
    armorlist = eval(enter[23])

    f.close()

.readlines() function 返回一个列表,每个项目包含一个单独的行。 为了从每一行中删除换行符,您可以使用列表推导:

f = open("data.txt", "r")
lines = [line.strip() for line in f.readlines()]

然后,您可以像您一样继续分别转换列表中的每个项目,或者尝试以某种方式自动推断循环中的类型。 如果您将示例文件格式化为更像配置文件,这将更容易。 这个线程有一些相关的答案:

从文本文件中检索变量值的最佳方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM