Файлы в Python - чтение в файле со списками - PullRequest
0 голосов
/ 06 апреля 2020

Мне дали файл для чтения с такими данными, как:

[420, True, "Hello", 6.9]

[["How", "are", "you"], False, {"chicken":"nuggets"}, 666]

Каждая строка в .txt заключена в [].

newfile = open('file.txt', 'r')
lines = newfile.readlines()
all = []
for line in lines:
    line = line.strip('\n')
    line = line[1:-1]
    line=line.split(', ')
    all += [line]
cleaning_up = [item for row in all for item in row]

Это кажется чтобы нормально работать с любыми элементами в моей панели списков ["How", "are", "you"], когда он распадается на

["How", 

"are", 

"you"]

, когда я печатаю каждый элемент в списке, содержащий все мои данные. Можно ли как-нибудь исправить это, чтобы сохранить весь список как один элемент, а не три?

Ответы [ 2 ]

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

Вы можете использовать eval для преобразования строк в списки.

newfile = open('file.txt', 'r') 
lines = newfile.readlines()

all = []
for line in lines:
    line = line.strip('\n')
    line = eval(line)
    all.append(line)
cleaning_up = [item for row in all for item in row]
0 голосов
/ 06 апреля 2020

Вы можете использовать literal_eval () из модуля ast для анализа строки, содержащей Python структуры данных.

Например,

>>> import ast
>>> ast.literal_eval('[["How", "are", "you"], False, {"chicken":"nuggets"}, 666]')
[['How', 'are', 'you'], False, {'chicken': 'nuggets'}, 666]

Итак, в вашей л oop вы можете сделать

    for line in lines:
        line = line.strip('\n')
        all.append(ast.literal_eval(line))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...