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

4

我有一些带控制字符的字符串,我想要让它们可见(例如打印文档)。

例如,我有:

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"

这是一个由四个字符组成的字符串。我不需要unicode编码,而是需要转义序列。


结果比我想象的更简单。我想要的结果正是 repr(dialect.lineterminator) 或者可能是 repr(dialect.lineterminator)[1:-1] - 4dummies
1个回答

9

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

>>> a = 'foo\nbar'
>>> print a
foo
bar
>>> print a.encode('string-escape')
foo\nbar

注意:此代码仅适用于Python2,在Python3中等效的代码是str.encode('unicode_escape'),据我所知。 这里是我最近提出的类似问题。

这远非完美,因为它转义了任何特殊字符,而不仅仅是控制字符。 - Rein F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接