【问题标题】:Strip "\n" from a multiline sting, except when inline从多行字符串中去除“\n”,内联时除外
【发布时间】:2019-06-11 03:21:11
【问题描述】:

如果我有一个多行字符串,其中包含“\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")'
]

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

有什么办法只能从多行字符串中去除“尾随”换行符? 如果有任何不清楚的地方,请告诉我,我会尝试进一步解释。

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

【问题讨论】:

    标签: python python-3.x string newline


    【解决方案1】:

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

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

    【讨论】:

    • 啊,我确实尝试用 replace("\n", "\\n") 转义它们,但这也替换了行尾的换行符,而原始字符串文字没有。谢谢!
    • 没问题,我很乐意提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多