use*_*346 2 python parsing tuples list
我正在以这种格式读取文件中的数据行:
['A', 'B', 'C', 'D', 'E']
['1', '2', '3', '4', '5']
Run Code Online (Sandbox Code Playgroud)
...等等
但是,当我这样做时type(dataInput[0]),它会告诉我它来自类型字符串.虽然它看起来像带括号和所有的列表.如何dataInput[0]直接进入列表而不是字符串?
这是一些代码:
fobj = open(selectedCase, 'r').read()
dataInput = re.split('\n', fobj)
Run Code Online (Sandbox Code Playgroud)
我见过如下的线程: 如何在Python中将逗号分隔的字符串转换为列表? 但是,该示例在字符串中没有括号.
使用ast.literal_eval()把这些字符串成Python列表:
import ast
dataInput = [ast.literal_eval(line) for line in fobj.splitlines()]
Run Code Online (Sandbox Code Playgroud)
演示:
>>> import ast
>>> result = ast.literal_eval("['A', 'B', 'C', 'D', 'E']")
>>> type(result)
<class 'list'>
>>> result
['A', 'B', 'C', 'D', 'E']
Run Code Online (Sandbox Code Playgroud)
您可能希望将文件对象用作上下文管理器,以使Python显式地再次关闭它:
with open(selectedCase) as infh:
dataInput = [ast.literal_eval(line) for line in infh]
Run Code Online (Sandbox Code Playgroud)
这也使用文件对象作为迭代器,循环将从文件一次给出一行.