Python,需要帮助将文本文件中的项解析为列表

use*_*600 1 python parsing

我正在尝试解析文本文件中的项目并将它们存储到列表中.数据看起来像这样:

[(0, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0), (4, 0, 0), (5, 0, 0), (6, 0, 0)]
[(10, 3, 1), (11, 3, 1), (12, 3, 1), (13, 3, 1), (13, 4, 1)]
[(10, 3, 5), (11, 3, 5), (12, 3, 5), (13, 3, 5), (13, 4, 5), (13, 5, 5), (13, 6, 5)]
[(6, 13, 5), (7, 13, 5), (8, 13, 5), (8, 14, 5), (7, 14, 5), (6, 14, 5), (6, 14, 6)]
Run Code Online (Sandbox Code Playgroud)

我能够剥离"["和"]",但无法将其余信息存储到列表中,格式如下:(x,y,z).有帮助吗?

 def dataParser(fileName):
    zoneList=[]; zone=[]
    input=open(fileName,"r")

    for line in input:
        vals = line.strip("[")
        newVals = vals.strip("]\n")

        print newVals
        v=newVals[0:9]
        zone.append(v)

    input.close()
    return zone
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 6

在这种特殊情况下,您可以使用ast.literal_eval:

>>> with open("list.txt") as fp:
...     data = [ast.literal_eval(line) for line in fp if line.strip()]
... 
>>> data
[[(0, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0), (4, 0, 0), (5, 0, 0), (6, 0, 0)], [(10, 3, 1), (11, 3, 1), (12, 3, 1), (13, 3, 1), (13, 4, 1)], [(10, 3, 5), (11, 3, 5), (12, 3, 5), (13, 3, 5), (13, 4, 5), (13, 5, 5), (13, 6, 5)], [(6, 13, 5), (7, 13, 5), (8, 13, 5), (8, 14, 5), (7, 14, 5), (6, 14, 5), (6, 14, 6)]]
Run Code Online (Sandbox Code Playgroud)

这是"安全"的版本eval.然而,正是由于这个原因,它并不是一般的.如果您正在生成此输入,您可能需要查看另一种保存数据的方式("序列化"),无论是使用pickle还是类似的东西JSON- 有很多可以在SO和其他地方使用的示例.