我在.txt文件中有以下内容,这些文件是从游戏中保存的。我需要重新运行游戏,插入适当的项目。
(' A', '1', '2', '+1.25', '+0', '4', (123,321))
(' B', '1', '2', '-0', '+0.25', 'V', (05,245))
(' 1', '0', '6', '+0', '-0.25', 'V', (10,250))
(' 2', '0', '6', '-0.5', '-1.75', '4', (190,8))
(' 3', '2', '4', '-1', '1', '3', (180,100))
用于恢复项目的代码是: -
Z=[None]*10
i=0
TT = 'TestZZ.txt'
with open (TT, 'r') as f:
array=[]
for line in f:
Z[i] = line
i = i+1
Z [1]的恢复列表是 "(' B',' 1',' 2',' -0',' + 0.25&# 39;,' V',(05,245))\ n"
我需要将每个项目作为一个数字字符串 如果我做Z [1] [3]我会得到' B'不是预期的-0
请帮助
答案 0 :(得分:3)
一个更简单有效的解决方案可能是
IDummyService
希望这会有所帮助:)
答案 1 :(得分:1)
Z[1]
的内容是字符串 "(' B', '1', '2', '-0', '+0.25', 'V', (05,245))"
,而不是您所期望的列表......并且:
Z[1][0] = '('
Z[1][1] = "'"
Z[1][2] = ' '
Z[1][3] = 'B'
因此结果是正确的,您的数据的简化解析器将是:
>>> data = "(' B', '1', '2', '-0', '+0.25', 'V', (05,245))"
>>> data.split(',')
["(' B'", " '1'", " '2'", " '-0'", " '+0.25'", " 'V'", ' (05', '245))']
>>> data.split(',')[2]
" '2'"
>>> data.split(',')[2].strip(', ')
"'2'"
>>> data.split(',')[2].strip("' ")
'2'
>>>
但它不会像' B, A'
那样处理字符串等等......所以你可能想要编写更强大的解析器。或者,您可以使用例如XML数据格式或使用pickle。
答案 2 :(得分:0)
我发现使用Pickle的方式可能不是最好的,但似乎有效。
import pickle
T=[None]*10
R=[None]*10
T[0]=('bs:','300:','test3.txt ','5:FR456')
T[1]=('Bisley', '400', '4', 'Fred', 'CD45')
T[2]=(' A', '1', '2', '+1.25', '+0', '4')
T[3]=(' B', '1', '2', '-0', '+0.25', 'V')
T[4]=(' 1', '0', '6', '+0', '-0.25', 'V')
T[5]=(' 2', '0', '6', '-0.5', '-1.75', '4')
output = open("save1.pkl", 'wb')
for i in range(0,10):
pickle.dump(T[i], output)
output.close()
inputFile = open("save1.pkl", 'rb')
表示范围(0,10)中的i: R [i] = pickle.load(inputFile)
inputFile.close() 对于范围内的i(0,10): 打印R [i]