Чтение списка кортежей из текстового файла со строками и числами - PullRequest
0 голосов
/ 27 мая 2019

У меня есть текстовый файл, где каждая строка представляет результаты операции анализа последовательности. Таким образом, первый элемент в каждом кортеже - это набор строк (букв), а второй элемент - это частота (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) 

1 Ответ

1 голос
/ 27 мая 2019

Как прокомментировали другие, вы можете использовать функцию 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)]
...