从带有字符串和数字的文本文件中读取元组列表

时间:2019-05-27 20:30:19

标签: python string int tuples

我有一个文本文件,其中每一行代表序列挖掘操作的结果。因此,每个元组中的第一个元素是字符串(字母)的元组,第二个元素是频率(整数)。

如何将这些内容从文本文件读回原始格式?格式如下,可以直接从文本文件中复制。...似乎找不到类似的示例,但是必须有一种轻松实现此目的的方法。

(('a',), 30838057)
(('a', 'b'), 23151399)
(('a', 'b', 'c'), 13865674)
(('a', 'b', 'c', 'e'), 8979035)
(('a', 'b', 'c', 'e', 'f'), 6771982)
(('a', 'b', 'c', 'e', 'f', 'g'), 4514076)
(('a', 'b', 'c', 'e', 'f', 'g', 'h'), 2403374) 

1 个答案:

答案 0 :(得分:1)

正如其他人所评论的,您可以使用ast.literal_eval()函数,因为您的数据似乎采用与Python文字相同的格式:

import ast
from pprint import pprint


filename = 'tuples_list.txt'

tuple_list = []
with open(filename) as inp:
    for line in inp:
        values = ast.literal_eval(line)
        tuple_list.append(values)

pprint(tuple_list)

输出:

[(('a',), 30838057),
 (('a', 'b'), 23151399),
 (('a', 'b', 'c'), 13865674),
 (('a', 'b', 'c', 'e'), 8979035),
 (('a', 'b', 'c', 'e', 'f'), 6771982),
 (('a', 'b', 'c', 'e', 'f', 'g'), 4514076),
 (('a', 'b', 'c', 'e', 'f', 'g', 'h'), 2403374)]