Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 8, 2017 15:38:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не получается преобразовать список в многомерный массив

потому что вы считываете содержимое файла = строку (так как режим открытия файла текстовой). Вы никоим образом не считывание список/словарь или тп простые или сложные структуры данных. То что считываемая строка выглядит как список списков - ничего не значит и тем более не обязано таковым быть.
В вашем конкретном случае поможет eval (однако злоупотреблять им оч не рекомендуется из соображений безопастности)

 >>> l = [1, 'a', True]
>>> print(l[0])
1
>>> ls = str(l)
>>> print(ls[0])
[
>>> lse = eval(ls)
>>> print(lse[0])
1
>>> 
Если вы пытались таким образом сохранить список, то это не удачная мысль. Для этого подойдет pickle модуль



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#2 Сен. 8, 2017 20:01:55

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Не получается преобразовать список в многомерный массив

грабли для вашего случая

 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']

Отредактировано marvellik (Сен. 8, 2017 20:07:03)

Офлайн

#3 Сен. 11, 2017 11:30:53

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Не получается преобразовать список в многомерный массив

C pickle ничего не получилось, а последний вариант выдает ошибку:
TypeError: clear() missing 1 required positional argument: ‘x’



Отредактировано Ubhra (Сен. 11, 2017 11:31:58)

Офлайн

#4 Сен. 11, 2017 14:10:47

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не получается преобразовать список в многомерный массив

Ubhra
проблема в вас и решать ее должны вы. Все просто и никакой магии.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Сен. 13, 2017 15:32:21

Ubhra
От:
Зарегистрирован: 2009-03-04
Сообщения: 133
Репутация: +  2  -
Профиль   Отправить e-mail  

Не получается преобразовать список в многомерный массив

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])



Офлайн

#6 Сен. 14, 2017 05:11:29

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Не получается преобразовать список в многомерный массив

 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 использовать, но здесь нет кавычек вокруг элементов массива. Ошибка будет.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version