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

时间:2013-06-04 18:39:11

标签: python

我有一个多行字符串,我想用不同的行替换字符串的最后一行。我如何最有效地做到这一点?

3 个答案:

答案 0 :(得分:6)

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

new = old.rstrip('\n').rsplit('\n', 1)[0] + '\nNew line to be added with line break included.'

这首先删除最后一行之后的任何尾随换行符,在文本的最后一行换行中将拆分一次,取出最后一行换行符之前的所有内容,并将结果与​​新换行符和文本连接起来。 / p>

演示:

>>> old = '''The quick
... brown fox jumps
... over the lazy
... dog
... '''
>>> old.rstrip('\n').rsplit('\n', 1)[0] + '\nhorse and rider'
'The quick\nbrown fox jumps\nover the lazy\nhorse and rider'

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

如果您正在处理具有不同行结尾的数据,请相应地进行调整。在这种情况下,os.linesep可能会有用。

答案 1 :(得分:0)

我会建议这种方法:

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

test1
test2
something else
>>>

答案 2 :(得分:-1)

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

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

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