LinuxForum.Fans
Тема

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

Автор: soln 3 сообщений 1227 просмотров
#235764

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

text

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

Вопросы
Чем обусловлено такое поведение и где про это можно почитать?
Как мне быть если внутри списка требуется передать одинарный '\'

пример

text

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 - не выполнено.
А теперь вместо переменной используем литерал:

text
 
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

вернулось 1, тобишь удачно
Как быть ???

#235808

soln, может убрать подавление ?
Вместо

soln написал:
In [39]: hexx = r'\x80\x20\x00\x00'
text
In [39]: hexx = '\x80\x20\x00\x00'
#238543

Да спасибо. Дело именно было в этом.
""" 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. """

Войдите или зарегистрируйтесь, чтобы ответить.