Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python从列表中选择项_Python_List - Fatal编程技术网

python从列表中选择项

python从列表中选择项,python,list,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'

我在一个.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','V',(05245))\n

我需要将每个项目作为num字符串获取 如果我做Z[1][3],我得到的是'B'而不是预期的-0


请提供帮助
Z[1]
的内容是字符串
“('B'、'1'、'2'、'-0'、'+0.25'、'V'、(05245))”
,而不是您所期望的列表。。。以及:

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数据格式或。

Z[1]的内容是字符串
“('B','1','2','-0','+0.25','V',(05245))”
,而不是您所期望的列表。。。以及:

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数据格式或使用。

一个更简单有效的解决方案可能是

// Say Z[1] is "(' B', '1', '2', '-0', '+0.25', 'V', (05,245))\n"
import ast
print ast.literal_eval(Z[1]) 
// this should return (' B', '1', '2', '-0', '+0.25', 'V', (5, 245))

希望这有帮助:)

可以找到一种更简单有效的解决方案

// Say Z[1] is "(' B', '1', '2', '-0', '+0.25', 'V', (05,245))\n"
import ast
print ast.literal_eval(Z[1]) 
// this should return (' B', '1', '2', '-0', '+0.25', 'V', (5, 245))

希望这有帮助:)

我找到了一种使用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() 对于范围(0,10)内的i:
print R[i]

我找到了一种使用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() 对于范围(0,10)内的i:
print R[i]

TestZZ.txt是使用的文本文件名('B','1','2','-0','+0.25','V',(05245))\n“是一个完整的字符串,不是用逗号分隔的列表。这就是为什么你会得到
Z[1][0]=”(“
Z[1][1]=””,
Z[1][5]=”,“
等等。我建议你使用
Pickle
模块,它会保留你的数据类型,你不必花太多时间从一些文本中提取相关信息。你能给我看一下Pickle T[0]的代码吗…T[5],数据,以便我可以读取它们backTestZZ.txt是使用的文本文件的名称('B','1','2','-0','+0.25','V',(05245))\n“
是一个完整的字符串,而不是用逗号分隔的列表。这就是为什么您会得到
Z[1][0]=”(“
Z[1][1]=”,
Z[1][5]=”,”
等等。我建议您使用
Pickle
模块。它将保留您的数据类型,您不必花费太多时间从某些文本中提取相关信息。您可以给我看Pickle T[0]…T[5]的代码吗,数据,以便我可以读取它们。这有助于我仍然无法轻松获取值,因为如果我可以直接从.txt文件加载到列表中,它们的长度不相同。['B','1','2','-0','+0.25','V',(05245)]然后我可以恢复项目。我不知道这是否会更容易。所有返回的值都直接打印到屏幕上,而无需进行任何计算,除了末尾的元组(屏幕位置)之外。要将其更改为列表,只需执行=>data=list(ast.literal_eval(Z[1])这有助于我仍然无法轻松获得值,因为如果我可以直接从.txt文件加载到列表中,它们的长度不同。['B','1','2','-0','+0.25','V',(05245)]然后我可以恢复项目。我不知道这是否会更容易。所有返回的值都直接打印到屏幕上,而无需进行任何计算,除了末尾的元组(屏幕位置)之外。要将其更改为列表,只需执行=>data=list(ast.literal_eval(Z[1])我是否可以将字符串转换为列表,因为我需要项目B 1 2-0+0.25等,因为它们将直接打印到屏幕上。不管它们是字符串还是数字。我是否可以将字符串转换为列表,因为我需要项目B 1 2-0+0.25等,因为它们将直接打印到屏幕上。不管它们是字符串还是数字。谢谢帮助和建议我现在有了一个有效的解决方案非常感谢帮助和建议我现在有了一个有效的解决方案