从多行字符串中删除“\n”,内联时除外

Strip "\n" from a multiline sting, except when inline

如果我有一个包含“\n”作为文本本身一部分的多行字符串,例如:

python_text = """
@commands.command()
def multi():
    print("Three\nLines\nHere")
"""

我怎样才能删除除文本本身之外的所有换行符?我尝试使用 splitlines() 创建列表,但多行字符串也将在文本本身的 \n 上拆分。出于同样的原因,将 splitlines(True)strip() 结合使用不起作用。

print(python_text.splitlines())

输出(格式化):

[
'@commands.command()', 
'def multi():', 
'    print("Three', 
'Lines', 
'Here")'
]

虽然我想要的输出是:

[
'@commands.command()', 
'def multi():', 
'    print("Three\nLines\nHere")'
]

(或多行字符串打印而不是列表打印,但格式相同)

有什么办法只能从多行字符串中去除 'trailing' 换行符? 如果有任何不清楚的地方,请告诉我,我会尽力解释。

编辑:更正了关于 splitlines()strip() 的解释。

你必须转义你的换行符。在这种情况下,您可以将其设为原始字符串文字:

python_text = r"""
@commands.command()
def multi():
    print("Three\nLines\nHere")
"""

print(python_text.splitlines())
>>>['', '@commands.command()', 'def multi():', '    print("Three\nLines\nHere")']