Чтение TXT-файла в виде списка вместо строки в Python - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть файл, который состоит из строк следующего формата: -

[123, something, some other thing, "text that i want", more details]

например: -

[1393349463, u'Tue Feb 25 17:31:03 +0000 2014', 438365537261735936, u'A Falcon character poster for Captain America: The Winter Soldier has swooped in', [], [u'totalfilm'], [u'//1bJdCJ2'], [u'http://pbs.twimg.com/media/BhViUNICQAAoBue.jpg'], 369, 362]

Теперь я хочу прочитать это как список непосредственно в python вместо строки сначала, а затем разделить строку на, и соединить ее обратно и все, потому что текстовая секция может иметь ',', и я не хочу разбивать это.

Я ищу что-то вроде этого:

with open("input.txt") as fp:
   for line in fp:
       corpus.append(line[3]) #read only text

1 Ответ

0 голосов
/ 29 апреля 2018

Ваш ввод, очевидно, генерируется вызовом print списков Python (или вызовом str или repr для них).

Этот конкретный пример может быть обработан с помощью literal_eval:

with open("input.txt") as fp:
    for line in fp:
        obj = ast.literal_eval(line)
        corpus.append(obj[3])

Однако, это не будет работать для всех отображений списка Python в целом. И когда это не работает ... ну, в общем, вы мало что можете сделать. Но вы можете просто literal_eval, пока не получите ошибку, а затем, для каждой ошибки, кропотливо решить, как предварительно обработать вещи, чтобы обойти ее.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...