Найти - Пользователи
Полная версия: Не получается преобразовать список в многомерный массив
Начало » Python для новичков » Не получается преобразовать список в многомерный массив
1 2
JOHN_16
потому что вы считываете содержимое файла = строку (так как режим открытия файла текстовой). Вы никоим образом не считывание список/словарь или тп простые или сложные структуры данных. То что считываемая строка выглядит как список списков - ничего не значит и тем более не обязано таковым быть.
В вашем конкретном случае поможет eval (однако злоупотреблять им оч не рекомендуется из соображений безопастности)
 >>> l = [1, 'a', True]
>>> print(l[0])
1
>>> ls = str(l)
>>> print(ls[0])
[
>>> lse = eval(ls)
>>> print(lse[0])
1
>>> 
Если вы пытались таким образом сохранить список, то это не удачная мысль. Для этого подойдет pickle модуль
marvellik
грабли для вашего случая
 def clear(x):
    return x.replace('[','').replace(']','').strip().split(',')
with open('test.txt') as inp:
    res_list = [ clear(text)[:-1] for text in inp.readlines()]
    
print(res_list[0])
['6:08:34', ' выход', ' Фамилия Имя Отчество', ' 01.08.2017']
Ubhra
C pickle ничего не получилось, а последний вариант выдает ошибку:
TypeError: clear() missing 1 required positional argument: ‘x’
JOHN_16
Ubhra
проблема в вас и решать ее должны вы. Все просто и никакой магии.
Ubhra
JOHN_16 Я не писал бы в раздел для новичков, если бы мог решить данную задачу самостоятельно.

В общем получилось все, я сохранил список в .csv, а потом модулем .csv записал в массив.

 def parsing2():
    data = open('out5.csv', 'r')
    reader = csv.reader(data, delimiter=';')
    rownum = 0
    a = []
    for row in reader:
        a.append(row)
        rownum += 1
        
    data.close()
    
    print (a[764][2])
scidam
 data_string = '''[[6:08:34, выход, Фамилия Имя Отчество, 01.08.2017],
[6:13:50, выход, Фамилия Имя Отчество, 01.08.2017],
[6:16:35, вход, Фамилия Имя Отчество, 01.08.2017],
[6:45:23, вход, Фамилия Имя Отчество, 01.08.2017],
[6:45:45, выход, Фамилия Имя Отчество, 01.08.2017]]'''
data_string = data_string.replace('[', '').replace(']','')
data_raw_list = data_string.split(',')
data_list = [data_raw_list[k:k + 4] for k in range(0, len(data_raw_list), 4)]
print(data_list[0][0], data_list[0][1])
print(data_list)

Можно было бы и ast.literal_eval использовать, но здесь нет кавычек вокруг элементов массива. Ошибка будет.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB