Уведомления

Группа в Telegram: @pythonsu

#1 Март 7, 2012 13:09:42

soln
От:
Зарегистрирован: 2011-11-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Python: передача экранирующего символа ( backslash ) из str в list

Здравствуйте натолкнулся на следующее

In [39]: hexx = r'\x80\x20\x00\x00'

In [40]: print hexx
\x80\x20\x00\x00

In [41]: listhex = [hexx]

In [42]: print listhex
['\\x80\\x20\\x00\\x00']

In [43]: print listhex[0]
\x80\x20\x00\x00

In [44]: print (listhex[0], listhex[0])
('\\x80\\x20\\x00\\x00', '\\x80\\x20\\x00\\x00')
Вопросы
Чем обусловлено такое поведение и где про это можно почитать?
Как мне быть если внутри списка требуется передать одинарный ‘\’

пример
In [45]: _edit = netsnmp.Varbind('.1.3.6.1.2.1.17.7.1.4.3.1.4', 1107, listhex[0] , 'octetstr')

In [46]: netsnmp.snmpset(_edit, Version = 2, DestHost=ip, Community=XXXXXXXXXXXXX)
Out[46]: 0
Вернулось 0 - не выполнено.
А теперь вместо переменной используем литерал:

 
In [47]: _edit = netsnmp.Varbind('.1.3.6.1.2.1.17.7.1.4.3.1.4', 1107, '\x80\x20\x00\x00' , 'octetstr')

In [48]: netsnmp.snmpset(_edit, Version = 2, DestHost=ip, Community=XXXXXXXXXXXXXXXX)
Out[48]: 1



Офлайн

#2 Март 7, 2012 16:12:27

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Python: передача экранирующего символа ( backslash ) из str в list

http://docs.python.org/reference/lexical_analysis.html#strings

String literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are called raw strings and use different rules for interpreting backslash escape sequences.

Если и так не понятно то проверьте вариант с

_edit = netsnmp.Varbind('.1.3.6.1.2.1.17.7.1.4.3.1.4', 1107, r'\x80\x20\x00\x00' , 'octetstr')
для чистоты эксперемента, так сказать.

Офлайн

#3 Март 8, 2012 17:28:27

soln
От:
Зарегистрирован: 2011-11-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Python: передача экранирующего символа ( backslash ) из str в list

s0rg
http://docs.python.org/reference/lexical_analysis.html#strings
для чистоты эксперемента, так сказать.
Попробовал не работает - возвращает ноль.
Спасибо за ссылку прочту напишу.



Офлайн

#4 Март 9, 2012 08:06:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Python: передача экранирующего символа ( backslash ) из str в list

soln
Чем обусловлено такое поведение и где про это можно почитать?
нужно почитать по встроенным типам в питоне
>>> s = '\\ \\ \\'
>>> [s]
['\\ \\ \\']
>>> len([s])
1
>>> list(s)
['\\', ' ', '\\', ' ', '\\']
>>> len(list(s))
5
>>> lst = list(s)
>>> lst
['\\', ' ', '\\', ' ', '\\']
>>> lst[0]
'\\'
>>>



Офлайн

#5 Март 17, 2012 20:37:37

soln
От:
Зарегистрирован: 2011-11-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Python: передача экранирующего символа ( backslash ) из str в list

s0rg
http://docs.python.org/reference/lexical_analysis.html#strings

String literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are called raw strings and use different rules for interpreting backslash escape sequences.
Извиняюсь, что пропал. Прочел, понял. Спасибо.

И офтоп.

По игрался я еще в netsnmp и прихожу к мысли не использовать данный модуль так - как в месте передачи hex string snmpset`у он ведет себя странно и человеческих эксепшенов не возвращает.

Пример
 In [231]: _edit = netsnmp.Varbind('.1.3.6.1.2.1.17.7.1.4.3.1.4', 1107)
In [232]: hexmask = netsnmp.snmpget(_edit, Version = 2, DestHost='ip', Community="comunitiname")

Тут я получил hex маску от netsnmp.snmpget через ipyton


In [233]: print hexmask
('\x80`\x00\x00',)

а тут маску которую он сам мне отдал отдаю netsnmp.snmpset

In [234]:  _edit = netsnmp.Varbind('.1.3.6.1.2.1.17.7.1.4.3.1.4', 1107, hexmask , 'octetstr')
In [235]: netsnmp.snmpset(_edit, Version = 2, DestHost='ip', Community="comunitiname")
Out[235]: 0
Упс НОЛЬ!!!! То-есть не выполнено. Это простите, как?

ну и в оф. документации прекрасное.

KNOWN BUGS:

Too many to mention at this point
в прочем может я просто плохо танцую, и тапки тут не причем.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version