Войти

Показать полную графическую версию : Форматированный вывод Python


novashdima
08-05-2013, 18:21
Всем привет.
Потребовалось написать на питоне скриптик, начал изучение, язык понравился, все нравится, но вот в чем дело, при выводе строки я получаю что-то типа:
[b'123\r\n', b'1234\r\n'...]
То есть выводится у меня все списком строк без форматирования, а как бы вывести по нормальному, чтобы применилось форматирование?

Iska
08-05-2013, 19:06
novashdima, для начала озвучьте конкретную версию, затем приведите достаточный код.

novashdima
08-05-2013, 19:12
Извиняюсь, Питон 3.3.1
Код вызывает консоль, туда вводит команду и возвращаемое консолью выводит на экран, вывожу простым указанием имени переменной/print, пробовал использовать write - матюкался IDLE.

Iska
08-05-2013, 19:34
приведите достаточный код. »

novashdima
08-05-2013, 19:37
proc = subprocess.Popen("snmpwalk -v1 -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.8", shell=True, stdout=subprocess.PIPE)
out = proc.stdout.readlines()
out

и тишина...

Iska
08-05-2013, 21:30
И где в этом коде форматированный вывод?

novashdima
08-05-2013, 21:51
Напишу еще проще:
out = 'Hello World!/nPython'

print(out) выведет:
Hello World!/nPython
а мне надо, чтобы вывело:
Hello World!
Python
Какой командой можно такое осуществить? format насколько я понял форматирует только вывод чисел.

lxa85
08-05-2013, 22:23
novashdima,
>>> out = "Hello\nWorld!"
>>> out
'Hello\nWorld!'
>>> print(out)
Hello
World!
>>>
обратите внимание на \n
В вашем примере он написан в другую сторону /n

novashdima
08-05-2013, 22:26
у меня список строк:
>>> print(out)
[b'IF-MIB::ifOperStatus.1 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.2 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.3 = INTEGER: down(2)\r\n', b'IF-MIB::ifOperStatus.4 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.5 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.6 = INTEGER: up(1)\r\n']
>>>

обратите внимание на \n
В вашем примере он написан в другую сторону /n »
опечатался

lxa85
08-05-2013, 22:40
у меня список строк: »
Используйте цикл.
out=[b'IF-MIB::ifOperStatus.1 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.2 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.3 = INTEGER: down(2)\r\n', b'IF-MIB::ifOperStatus.4 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.5 = INTEGER: up(1)\r\n', b'IF-MIB::ifOperStatus.6 = INTEGER: up(1)\r\n']
for i in out:
print(i)

for j in out:
print(j[:-2])

print(out)

novashdima
08-05-2013, 23:11
for j in out:
print(j[:-2]) »
Помогло, но захотел убрать первый символ, написал
print(j[1:-2])
но он убирает первый символ после кавычек, а не 'b'
Есть какая-то функция для замены одной подстроки другой? (или только pop+insert?)

Iska
08-05-2013, 23:49
«b» — префикс, а не часть строки. Зачем убирать?

novashdima
09-05-2013, 00:01
Задам вопрос по-другому, мне надо отпарсить все это дело, как бы так это все сделать, учитывая что возвращаемое будет разным, поэтому к индексу символов не привязываемся, то мне надо вытащить подстроки, разделенные пробелами, и потом уже с ними работать.

lxa85
09-05-2013, 00:20
novashdima, документация вещь хорошая.
По Питону она достаточно вменяемая.
Работа со строками (http://docs.python.org/3.3/library/string.html)
то мне надо вытащить подстроки, разделенные пробелами »
функция split (http://docs.python.org/3.3/library/stdtypes.html#str.split)




© OSzone.net 2001-2012