Я хочу одну обратную косую черту - не две

1

У меня есть строка, которая после печати выглядит так: \x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71

Но я хочу изменить эту строку на "\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71", которая не печатается (необходимо записать в последовательный порт). Я знаю, что это проблема с "\". как я могу заменить эти обратные косы печати на непечатные?

  • 2
    Вы хотите преобразовать строку '\\x4d\\x4e' в '\x4d\x4e' (то есть 'MN' )?
Теги:
string
backslash

4 ответа

5
Лучший ответ

Если вы хотите декодировать свою строку, используйте decode() с 'string_escape' в качестве параметра, который интерпретирует литералы в вашей переменной как литеральную строку python (как если бы он был введен как постоянная строка в вашем коде).

mystr.decode('string_escape')
  • 0
    Это помогло мне. Моя проблема решена. Большое спасибо ;)
2

Используйте decode():

>>> st = r'\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71'
>>> print st
\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71
>>> print st.decode('string-escape')
MÿýfHq

Этот последний мусор - это то, что печатает мой Python при попытке распечатать вашу непечатаемую строку.

1

Вы смешиваете печатное представление строкового литерала со самой строкой:

>>> c = '\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71'
>>> c
'M\xff\xfd\x00\x02\x8f\x0e\x80fHq'
>>> len(c)
11
>>> len('\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71')
11
>>> len(r'\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71')
44
1
your_string.decode('string_escape')
  • 0
    Спасибо! Это решение моей проблемы
  • 0
    Понятия не имею, может потому что я включил ссылку? Мы все были в течение минуты или около того ;-) (честно: я нашел, что некоторые другие более ясны чем мое, и качество, а не скорость, должно гарантировать проверенный ответ).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню