在Python中,打印字符串时可以转义换行符吗?

80 投票
3 回答
117991 浏览
提问于 2025-04-17 18:58

我想在打印从其他地方获取的字符串时,让换行符 \n 显示出来。比如,如果字符串是 'abc\ndef',我不想看到这样的效果:

>>> print(line)
abc
def

而是想看到这样的效果:

>>> print(line)
abc\ndef

有没有办法修改打印的方式,或者修改传入的参数,或者用其他的函数来实现这个效果呢?

3 个回答

32

最简单的方法是:str_object.replace("\n", "\\n")

如果你想显示所有的转义字符,其他方法会更好。但如果你只关心换行符,那就直接用这个替换方法就行了。

131

只需要用 'string_escape' 编码就可以了。

>>> print "foo\nbar".encode('string_escape')
foo\nbar

在 Python 3 中,'string_escape' 变成了 unicode_escape。另外,我们需要对字节和 Unicode 多加注意,所以在编码后还需要进行解码:

>>> print("foo\nbar".encode("unicode_escape").decode("utf-8"))

unicode_escape 参考

67

另一种让Python停止使用转义字符的方法是使用原始字符串,像这样:

>>> print(r"abc\ndef")
abc\ndef

或者

>>> string = "abc\ndef"
>>> print (repr(string))
>>> 'abc\ndef'

使用repr()的唯一问题是它会把你的字符串放在单引号里,如果你想使用引号,这样可能会很方便。

撰写回答