如何自动转义 Python 字符串中的控制字符

4du*_*ies 3 python escaping control-characters

我有包含控制字符的字符串,我想让它们可见(例如,用于打印它们的文档)。

例如,我有

dialect = csv.sniffer().sniff(csvfile.read(1024))
Run Code Online (Sandbox Code Playgroud)

我想打印的内容

dialect.lineterminator
Run Code Online (Sandbox Code Playgroud)

这显然包含控制字符。通过在它们前面粘贴“\”,它们不会变得可打印。我希望看到 \n \r 或两者,视情况而定。

由于我使用的是 Python 3,因此使用 str.encode 提出了类似的问题,例如

    dialect.lineterminator.encode('unicode-escape')
Run Code Online (Sandbox Code Playgroud)

但如果我打印这个,我会得到

    b'\\r\\n'
Run Code Online (Sandbox Code Playgroud)

尽管它的外观,它只是两个字节。我想要一个 unicode 字符串,例如

    "\\r\\n"
Run Code Online (Sandbox Code Playgroud)

这是一个 4 个字符的字符串。我不是在 unicode 编码之后,而是在转义序列之后。

Wil*_*ill 6

您可以将字符串转换为原始字符串:

>>> a = 'foo\nbar'
>>> print a
foo
bar
>>> print a.encode('string-escape')
foo\nbar
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于 Python2,在 3 中等效于str.encode('unicode_escape')AFAIK

这是我最近问的一个类似问题