首页 > 解决方案 > 从包含字符串和数字的文本文件中读取元组列表

问题描述

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

如何将这些从文本文件读回原始格式?格式如下,直接从文本文件中复制....似乎找不到任何类似的例子,但必须有一种方法可以轻松地做到这一点。

(('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) 

标签: pythonstringinttuples

解决方案


正如其他人评论的那样,您可以使用该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)]

推荐阅读