Как автоматически экранировать управляющие символы в строке Python
У меня есть строки с управляющими символами в них, и я хочу сделать их видимыми (например, для печати их документации).
Например, у меня есть
dialect = csv.sniffer().sniff(csvfile.read(1024))
и я хочу напечатать содержимое
dialect.lineterminator
Это, очевидно, содержит управляющий символ (ы). Они не становятся пригодными для печати, вставляя перед ними знак "\". Я хотел бы видеть \n \r или оба, в зависимости от ситуации.
Поскольку я использую Python 3, аналогичные вопросы предложили использовать str.encode, например:
dialect.lineterminator.encode('unicode-escape')
но если я распечатаю это, я получаю
b'\\r\\n'
что, несмотря на его внешний вид, всего два байта. Я хочу Unicode-строку, такую как
"\\r\\n"
которая является 4-символьной строкой. Я не после кодировки Unicode, но escape-последовательности.
1 ответ
Вы можете просто преобразовать строку в необработанную строку:
>>> a = 'foo\nbar'
>>> print a
foo
bar
>>> print a.encode('string-escape')
foo\nbar
Примечание: это только для Python2, в 3 эквивалент str.encode('unicode_escape')
насколько мне известно
Вот похожий вопрос, который я недавно задавал.