Найти - Пользователи
Полная версия: Не получается преобразовать список в многомерный массив
Начало » Python для новичков » Не получается преобразовать список в многомерный массив
1 2
Ubhra
Добрый день.
Принт выводит вот такой список:
 [[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]]
Хочу вывести первый элемент массива:
 print (s[0])
Выводит только скобку [
Пишу:
 print (s[1])
Эта же скобка.
Shaman
 print('''[[
hello!!!
]]''')
noob_saibot
Ubhra
Добрый день.Принт выводит вот такой список:
 repr(s)
FishHook
Ubhra
У вас нет списка, у вас строка.
Сделайте
 print(type(s))
и убедитесь в этом сами
Ubhra
Пишет <class ‘str’>

А как строку преобразовать?
Slow
можно тупо вот так:
 [e.replace('[', '').replace(']','').split(', ') for e in s.strip().replace('\n', '').split('],')]
но работать будет только для так (и только так) отфортматированных строк, что то универсальное писать нужно исходя из задачи.
ps. а вместо реплейсов использовать транслейт
Ubhra
Я убирал переносы строк, получалось на вывод такое:
 [[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]]
Но опять же видит как строку.

Это ведь и есть запись массива?
 s = [[1, 2, 3], [a, b, c]]
Почему оно тогда не читается как массив?
Slow
Ubhra
Почему оно тогда не читается как массив?
потому что питон умный и многое делает за вас
в частности, когда вы пытаетесь вывести на печать что-либо, он лукапит методы __str__ и __repr__ (за порядок не ручаюсь, плохо помню), вызывает их для получения, кхм, человеколюбивого представления. И на массивах (в данном случае - list) что-то из этого имеется
Ubhra
Объясните пожалуйста на примере почему так.

Файл test.txt
 [['a', 'b', 'c'], ['d', 'e', 'f']]
 def p():
    in = open('test.txt', 'r')
    s = in.read()
    print (s[1])
    in.close()
 >>>
[
Vintets
Ubhra
Объясните пожалуйста на примере почему так.
Потому, что в txt файле нет списков, там только строки. И читаешь ты строки. Потом можешь перевести в список.

Дам вредный совет, но самый простой:
s = eval(in.read())

Для 2 питона. Не знаю в 3-м его не порезали.

А так, смотря кто и зачем так пишет в файл. Если туда пишет другая программа или руками это одно.
Если пишет эта же программа или другая на питоне, можно использовать модуль Pickle. Можно законсервировать и расконсервировать любой объект питона, не только списки и словари. Можно и функции и классы.
Но это подойдёт если файл не будет читаться человеком или другой прогой.
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