我有一个文件,其中每一行都是树的列表表示。例如,文件中的这些行之一是:
[1, [[2,[]], [3, [ [5,[]], [6, [ [10,[]] ] ] ]], [4, [ [7,[]], [8,[]], [9,[]] ]] ]]
如果我将其复制并粘贴到我的程序中,它就会明白这是一个列表,我可以轻松地操作它来查找根和子项,然后获取这些子项并找到它们的子项,等等。当我读取文件行时按行,它会将这些行转换为字符串。如果我尝试将这些字符串转换为列表,那么字符串中的每个单独字符都会成为列表中的不同项目,而这不是我想要的。
我只是想知道如何逐行读取文件,但它不是吐出字符串,而是以文字列表形式给出每一行。我正在读取的文件是一个 .txt 文件,它必须保持这种状态,我无法将其另存为 .py 文件或类似文件。
尝试
ast
模块:
>>> s = "[1, [[2,[]], [3, [ [5,[]], [6, [ [10,[]] ] ] ]], [4, [ [7,[]], [8,[]], [9,[]] ]] ]]"
>>> l = ast.literal_eval(s)
>>> l[0]
1
您可以将数据文件加载到这样的列表中,并且类型将被正确处理:
def load_lines():
res=[]
with open("datafile.txt","r+") as f:
for line in f.readlines():
a_line = [ast.literal_eval(text) for text in line.split(',')]
res.append(a_line)
return res