Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Форматированный вывод Python (http://forum.oszone.net/showthread.php?t=260189)

novashdima 08-05-2013 18:21 2146675

Форматированный вывод Python
 
Всем привет.
Потребовалось написать на питоне скриптик, начал изучение, язык понравился, все нравится, но вот в чем дело, при выводе строки я получаю что-то типа:
Код:

[b'123\r\n', b'1234\r\n'...]
То есть выводится у меня все списком строк без форматирования, а как бы вывести по нормальному, чтобы применилось форматирование?

Iska 08-05-2013 19:06 2146703

novashdima, для начала озвучьте конкретную версию, затем приведите достаточный код.

novashdima 08-05-2013 19:12 2146707

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

Iska 08-05-2013 19:34 2146713

Цитата:

Цитата Iska
приведите достаточный код. »


novashdima 08-05-2013 19:37 2146715

Код:

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 2146762

И где в этом коде форматированный вывод?

novashdima 08-05-2013 21:51 2146778

Напишу еще проще:
Код:

out = 'Hello World!/nPython'
Код:

print(out) выведет:
Hello World!/nPython
а мне надо, чтобы вывело:
Hello World!
Python

Какой командой можно такое осуществить? format насколько я понял форматирует только вывод чисел.

lxa85 08-05-2013 22:23 2146805

novashdima,
Код:

>>> out = "Hello\nWorld!"
>>> out
'Hello\nWorld!'
>>> print(out)
Hello
World!
>>>

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

novashdima 08-05-2013 22:26 2146808

у меня список строк:
Код:

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

Цитата:

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

опечатался

lxa85 08-05-2013 22:40 2146814

Цитата:

Цитата novashdima
у меня список строк: »

Используйте цикл.
Код:

    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 2146831

Цитата:

Цитата lxa85
for j in out:
print(j[:-2]) »

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

Iska 08-05-2013 23:49 2146850

«b» — префикс, а не часть строки. Зачем убирать?

novashdima 09-05-2013 00:01 2146856

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

lxa85 09-05-2013 00:20 2146871

novashdima, документация вещь хорошая.
По Питону она достаточно вменяемая.
Работа со строками
Цитата:

Цитата novashdima
то мне надо вытащить подстроки, разделенные пробелами »

функция split


Время: 06:23.

Время: 06:23.
© OSzone.net 2001-