在Python中有没有简单的方法在r''字符串中添加\n?
我需要把几个路径放到一个字符串里,并在最后加上一个换行符(\n)。为了方便,我在字符串前面加了一个关键字 r。这样做的结果是,换行符 '\n' 不能正常显示。
举个例子:
str_output = r'name = %(name)s, some_dir = \\folder0\\..., description = "%(des)s\n'
print(str_output % {'name':'new', 'des':'new add one'})
输出的结果不会换行。目前我用字符串相加的方法来解决这个问题,比如:
str_output = r'name = %(name)s, some_dir = \\folder0\\..., description = "%(des)s' + '\n'
我想知道有没有其他更方便的方法来实现这个,而不是之前定义的 str_output。因为字符串相加在我的代码里看起来有点丑。谢谢!
5 个回答
4
你在字符串前面加的 r
是告诉 Python 这是一个“原始”字符串,这样里面的转义字符就会被当作普通字符来处理。我猜你这样做是因为你有两个反斜杠(\\),你不想让 Python 把它们当成一个转义的反斜杠。不过,使用原始字符串也会导致 \n
不被当作换行符来处理。
解决这个问题的方法有两个:要么把原始字符串和换行符分开,然后再把它们连接起来(就像你现在做的那样),要么使用普通字符串并对反斜杠进行转义:
str_output = 'name = %(name)s, some_dir = \\\\folder0\\\\..., description = "%(des)s\n'
14
我来得有点晚,不过这是我最近遇到的一个需求。
我想在matplotlib
中为一个二维直方图添加多行的坐标轴标签,并且希望能解析LaTeX格式。
我的解决办法是用括号来开始换行,然后结合普通字符串和原始字符串来实现换行效果:
xlabel=('Time of Flight (ToF)\n'
r'[$\times10^3$ arb. units]')
看看效果是这样的:
这个方法还可以扩展到更复杂的字符串。
2
字符串字面量前面的 r
表示这是一个原始字符串,也就是说里面的转义字符都被当作普通字符来处理。如果你真的想使用原始字符串,可以试试下面的方式:
name = 'new'
des = 'new add one'
newline = '\n'
str_output = rf'name = {name}s, some_dir = \\folder0\\..., description = "{des}s{newline}s'
print(str_output)
不过这样的话,你就得在每个 dict
里处理 newline
(换行符)。
还有另一种做法,稍微有点意思:
str_output = r'name = %(name)s, some_dir = \\folder0\\..., description = "%(des)s%(\n)s'
print(str_output % {'name':'new', 'des':'new add one', '\\n': '\n'})