Форум сайта python.su
потому что вы считываете содержимое файла = строку (так как режим открытия файла текстовой). Вы никоим образом не считывание список/словарь или тп простые или сложные структуры данных. То что считываемая строка выглядит как список списков - ничего не значит и тем более не обязано таковым быть.
В вашем конкретном случае поможет eval (однако злоупотреблять им оч не рекомендуется из соображений безопастности)
>>> l = [1, 'a', True] >>> print(l[0]) 1 >>> ls = str(l) >>> print(ls[0]) [ >>> lse = eval(ls) >>> print(lse[0]) 1 >>>
Офлайн
грабли для вашего случая
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)
Офлайн
C pickle ничего не получилось, а последний вариант выдает ошибку:
TypeError: clear() missing 1 required positional argument: ‘x’
Отредактировано Ubhra (Сен. 11, 2017 11:31:58)
Офлайн
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])
Офлайн
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)
Офлайн