Как автоматически экранировать управляющие символы в строке 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') насколько мне известно

Вот похожий вопрос, который я недавно задавал.

Другие вопросы по тегам