Получить массив из текстового файла в виде списка в python

avatar
codiaf
8 апреля 2018 в 00:33
69
2
-1

У меня есть текстовый файл, содержащий массив, подобный этому примеру:

myarray=['banana', 'carrot', 'apple']

Мне нужно прочитать все строки в этом файле и получить содержимое myarray, но я не знаю, как сообщить python, что это содержимое является списком.

with open(myFilePath) as myFile:
    for line in myFile:
        line = line.rstrip()
        if 'myarray' in line:
            line_splitted = line.split('myarray=')
            if len(line_splitted) > 1:
                myArrayContent = line_splitted[1]

Python, по логике вещей, читал myArrayContent как строку.

Есть идеи?

Источник

Ответы (2)

avatar
DYZ
8 апреля 2018 в 00:39
2

Вы можете использовать модуль AST:

import ast
myarray = ast.literal_eval(line.split("=")[1])
#['banana', 'carrot', 'apple']
avatar
Aaditya Ura
8 апреля 2018 в 06:24
0

Вы можете использовать просто numpy:

import numpy as np
with open('file','r') as f:
    for line in f:
        print(np.array(line.split('=')[1]))

выход:

['banana', 'carrot', 'apple']
codiaf
8 апреля 2018 в 15:51
0

В чем преимущество импорта ast по сравнению с ответом @Dyz? Есть ли какие-либо улучшения производительности или только 2 способа сделать это?

Aaditya Ura
8 апреля 2018 в 15:55
0

@codiaf прочитал это nedbatchelder.com/blog/201206/eval_really_is_dangerous.html