Прочитать список другого файла в Python - PullRequest
0 голосов
/ 03 мая 2018

Мой текстовый файл с именем test.txt, как показано ниже.

[['A', 3.992303979497981], ['V', 2.2251878737397264], ['V', 2.703754348429766], ['A', 3.900215472550781], ['A', 4.99003388996634]
[['C', 3.5329528530441805], ['A', 1.1530906322097374], ['A', 2.666421771048816], ['V', 1.2859199105217558], ['B', 0.40879871489389696]

Из другого файла code.py, как я могу прочитать каждую строку в виде списка только с значениями? значит, я хочу получить значения в mylist, как

mylist = [[[A],[V],[V],[A],[A]],
          [[C],[A],[A],[V],[B]]]

Я попытался сделать ниже, но это не работает.

import ast
with open('test.txt', 'r') as fp:
    mylisttrain = [ast.literal_eval(line) for line in fp]

price=[]
for x in range(0,2):
    for y in range(0,10):
        price.append([mylisttrain[x][y][0]])

Это дает вывод как

[[A],[V],[V],[A],[A],
 [C],[A],[A],[V],[B]]

Но я хочу вывод, подобный этому.

[[[A],[V],[V],[A],[A]],
 [[C],[A],[A],[V],[B]]]

Я хочу, чтобы каждая строка ввода находилась в отдельном подсписке.

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете использовать понимание вложенного списка, чтобы сохранить структуру ввода:

import ast
new_s = [ast.literal_eval(line.strip('\n')+']') for line in open('filename.txt')]
final_data = [[[a] for a, _ in i] for i in new_s]

выход

[[['A'], ['V'], ['V'], ['A'], ['A']], [['C'], ['A'], ['A'], ['V'], ['B']]]

Однако вместо понимания списка вы можете создать временный список перед внутренним циклом for, чтобы сохранить результат захвата первого символа:

price=[]
for i in mylisttrain:
   temp = []
   for a, _ in i:
     temp.append([a])
   price.append(temp)

Редактировать: для снятия скобок можно использовать дополнительную распаковку:

a, b = price
print(a)
print(b)

Выход:

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