Python: список извлекается из текстового файла как строка, не распознанная как список - PullRequest
2 голосов
/ 02 апреля 2020

Я сохранил данные шоу из API epguide в текстовом файле, который выглядит следующим образом:

[{'epguide_name': 'gooddoctor', 'title': 'The Good Doctor', 'imdb_id ':' tt6470478 ',' эпизоды ':' http://epguides.frecar.no/show/gooddoctor/ ',' first_episode ':' http://epguides.frecar.no/show/gooddoctor/first/ ',' next_episode ':' http://epguides.frecar.no/show/gooddoctor/next/ ',' last_episode ':' http://epguides.frecar.no/show/gooddoctor/last/ ',' epguides_url ':' http://www.epguides.com/gooddoctor '}]

Когда я сейчас пытаюсь это прочитать как список в python он не распознает его как таковой, но только как строку, несмотря на квадратные скобки:

    with open(file_shows, 'r', encoding='utf-8') as fs:
       fs = fs.read()
       print(type(fs))
       print(next((item for item in list if item['title'] == show), None)['episodes'])

Тип остается str, и поэтому поиск также не работает. Как я могу преобразовать данные «назад» в список?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Попробуйте следующее:

import json
with open(file_shows, 'r', encoding='utf-8') as fs:
       data = json.loads(fs.read().replace("'",'"')) # data will be list and not str

Наслаждайтесь!

0 голосов
/ 02 апреля 2020

Одно решение выглядит следующим образом:

with open('fileShows.txt', 'r', encoding='utf-8') as fs:
    fs = fs.read()
    print(type(fs))
    my_list = list(fs)
    print(type(my_list))

Другое решение:

with open('fileShows.txt', 'r', encoding='utf-8') as fs:
    fs = fs.read()
    print(type(fs))
    my_list = eval(fs)
    print(type(my_list))

В основном eval () преобразует вашу строку, извлеченную из указателя файла, в его базовый тип со списком типов.

...