python从列表中选择项目

时间:2015-05-04 10:50:08

标签: python list

我在.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

请帮助

3 个答案:

答案 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]