有没有简单的方法可以在 python 中的 r'' 字符串中添加 \n

Erx*_*xin 10 python string format

我需要将多个路径添加到最后带有 \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'})
Run Code Online (Sandbox Code Playgroud)

输出将显示无换行符。目前我使用 string plus 来绕过这个问题。例如:

str_output = r'name = %(name)s, some_dir = \\folder0\\..., description = "%(des)s' + '\n'
Run Code Online (Sandbox Code Playgroud)

而不是之前定义的 str_output。我很好奇是否还有其他方便的方法可以做到这一点?在我的代码中,字符串 plus 看起来很难看。谢谢你!

com*_*hys 13

我来晚了一点,但这是我自己最近的要求。\n我想要一个带有 LaTeX 解析的多行轴标签,用于matplotlib.

\n

我的解决方案是使用括号开始续行,然后组合普通字符串和原始字符串来实现换行:

\n
xlabel=(\'Time of Flight (ToF)\\n\'\n        r\'[$\\times10^3$ arb. units]\')\n
Run Code Online (Sandbox Code Playgroud)\n

这是\xe2\x80\x99 的样子:

\n

这是结果的屏幕截图

\n

这可以扩展到更复杂的字符串。

\n


dmg*_*dmg 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)
Run Code Online (Sandbox Code Playgroud)

尽管这意味着您必须承受newline每一次的痛苦dict

另一种更有意义的方法是:

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'})
Run Code Online (Sandbox Code Playgroud)