如何从字符串内部获取数据结构(Python)

Leo*_*llo 2 python data-structures

我有一个程序在服务器上的.txt文件中输出一个列表,我想将该列表保存在一个新变量中.
我正在做:

with open ("file.txt", "r") as myfile:
    data = myfile.read().replace('\n', '')
var = data
Run Code Online (Sandbox Code Playgroud)

但显然会print(var)返回一个字符串"[list, of, stuff]"

是的,我可以绕过txt-save程序,但万一我不能?

sun*_*raj 6

你可以使用AST

import ast
var="[list, of, stuff]"
var=ast.literal_eval(var)
print var[0]
#output list
Run Code Online (Sandbox Code Playgroud)

来自docs

ast.literal_eval(node_or_string)安全地评估表达式节点或包含Python表达式的字符串.提供的字符串或节点可能只包含以下Python文字结构:字符串,字节,数字,元组,列表,dicts,集合,布尔值和None.

如果您使用JSON序列化了原始数据,那么您也可以使用Python标准库中的json模块.

即使只是print(some_list)你仍然可以使用json库; 即:

>>> from json import dumps, loads
>>> xs = [1, 2, 3]
>>> loads(dumps(xs)) == loads(repr(xs))
True
Run Code Online (Sandbox Code Playgroud)