Получить определенные элементы из списка после чтения файла - PullRequest
0 голосов
/ 08 мая 2019

Я использую Python и у меня есть текстовый файл с результатами предыдущего сложного кода. Он записал в файл под названием «результаты», структурированный по:

xml file name.xml

['chebi:28726', 'chebi:27466', 'chebi:27721', 'chebi:15532', 'chebi:15346']

xml file name.xml

['chebi:27868', 'chebi:27668', 'chebi:15471', 'chebi:15521', 'chebi:15346']

xml file name.xml

['chebi:28528', 'chebi:28325', 'chebi:10723', 'chebi:28493', 'chebi:15346']

etc...

мой текущий код:

file = open("results.txt", "r")

data = file.readlines()

for a in data:

    print(a)

Проблема в том, что я хочу захватить определенные элементы в этом списке, например chebi:28528, и преобразовать их из их текущих соединений в другой формат. Я уже написал код для этого преобразования, но у меня возникли проблемы с шагом перед фактическим преобразованием соединений.

Проблема в том, что мне нужно иметь возможность перебирать файл и выбирать каждый элемент из этого списка, но я не могу это сделать.

Если я сделаю

for a in data:

    for b in a:

Выбирает каждый отдельный символ, а не все слово (chebi:28528).

Есть ли способ, которым я могу пройтись по текстовому файлу и получить только определенные соединения Chebi, чтобы затем я мог преобразовать их в другой необходимый формат? Python рассматривает весь список соединений как 1 элемент, и индексирование в этом списке будет просто соответствовать символу, а не соединению.

1 Ответ

0 голосов
/ 08 мая 2019

Итак, при условии, что ваш файл такой же, как и выше, похоже, что у вас есть списки в необработанном тестовом формате. Вы можете зациклить эти элементы слова, преобразовав их в списки Python, используя ast или что-то подобное.

У вас были правильные идеи, но вы на самом деле просматриваете персонажей. Как насчет этого?

import ast

with open('results.txt', 'r') as f:
    data = f.readlines()


for line in data:
    if '[' not in line:
        continue

    ls = ast.literal_eval(line)

    for word in ls:
        if 'chebi' in word:
            process_me(word) 
...