Python 如何有效地替换字符串中的最后一行?

Python 如何有效地替换字符串中的最后一行?,python,Python,我有一个多行字符串,我想用另一行替换字符串的最后一行。如何最有效地执行此操作?在最后一个换行符上拆分并附加新行: new = old.rstrip('\n').rsplit('\n', 1)[0] + '\nNew line to be added with line break included.' 首先删除最后一行之后的任何尾随换行符,在文本中的最后一个换行符上拆分一次,获取最后一个换行符之前的所有内容,并将结果与新换行符和文本连接起来 演示: 这假定您的行由\n字符分隔;在文本模式下读取

我有一个多行字符串,我想用另一行替换字符串的最后一行。如何最有效地执行此操作?

在最后一个换行符上拆分并附加新行:

new = old.rstrip('\n').rsplit('\n', 1)[0] + '\nNew line to be added with line break included.'
首先删除最后一行之后的任何尾随换行符,在文本中的最后一个换行符上拆分一次,获取最后一个换行符之前的所有内容,并将结果与新换行符和文本连接起来

演示:

这假定您的行由
\n
字符分隔;在文本模式下读取文本文件可以在任何平台上提供此类数据


如果要处理具有不同行尾的数据,请进行相应调整。在这种情况下可能会很有用。

在最后一个换行符上拆分并附加新行:

new = old.rstrip('\n').rsplit('\n', 1)[0] + '\nNew line to be added with line break included.'
首先删除最后一行之后的任何尾随换行符,在文本中的最后一个换行符上拆分一次,获取最后一个换行符之前的所有内容,并将结果与新换行符和文本连接起来

演示:

这假定您的行由
\n
字符分隔;在文本模式下读取文本文件可以在任何平台上提供此类数据


如果要处理具有不同行尾的数据,请进行相应调整。在这种情况下可能会很有用。

我建议采用以下方法:

>>> x = """
... test1
... test2
... test3"""
>>> print "\n".join(x.splitlines()[:-1]+["something else"])

test1
test2
something else
>>>

我建议采取这种做法:

>>> x = """
... test1
... test2
... test3"""
>>> print "\n".join(x.splitlines()[:-1]+["something else"])

test1
test2
something else
>>>

您可以使用简单的正则表达式来实现这一点

import re
new_string = re.sub(r'[^\n]*\n?$', "replacement", "existing\nstring")

它匹配所有内容(字符串末尾的\n除外),并将其替换为替换字符串。

您可以使用简单的正则表达式来完成此操作

import re
new_string = re.sub(r'[^\n]*\n?$', "replacement", "existing\nstring")

它匹配所有内容,但字符串末尾的\n除外,并用替换字符串替换它。

我忘了后面的换行符+1!我不会删去尾部的新行,只考虑最后一行在那个例子中是空白的。@ Cairnarvon:这完全取决于上下文。在这种情况下,省去
.rstrip()
调用,您就被设置好了。我忘记了尾随的换行符+1!我不会删去尾部的新行,只考虑最后一行在那个例子中是空白的。@ Cairnarvon:这完全取决于上下文。在这种情况下,省去
.rstrip()
调用,您就完成了设置。使用
re
绝对是最大的开销!OP的问题是关于最有效的方法。使用
re
绝对是最大的开销!OP的问题是关于最有效的方法。是的,你是对的-我对“最有效”的解释是从程序员的角度。是的,你是对的-我对“最有效”的解释是从程序员的角度。