从Python中读取文本行作为列表

时间:2016-10-03 15:11:35

标签: python

我从文本文件中读取数据。我的每一行数据都有以下结构

(110, 'Math', 1, 5)
(110, 'Sports', 1,  5)
(110, 'Geography', 4, 10)
(112, 'History', 1,  9)
....

当我从文件中读取数据时,它被解析为字符串。因此,对于所有行,我将数据解析为字符串列表。但是我想创建一个包含4个不同元素(整数和字符串)的列表。如何以元素方式读取文件而不将其解析为字符串?

我读取文件的代码如下:

data1 = [line.strip() for line in open("data.txt", 'r')]

2 个答案:

答案 0 :(得分:6)

假设格式总是如您所述(即对应于Python元组语法),可以使用ast.literal_eval()轻松完成:

>>> ast.literal_eval("(110, 'Math', 1, 5)")
(110, 'Math', 1, 5)

所以,完整的代码是:

import ast
with open('data.txt') as fp:
    data = [ast.literal_eval(line) for line in fp]

答案 1 :(得分:1)

执行以下操作:

data1 = [line.strip(')').strip('(').split() for line in open("data.txt", 'r')]