0

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

4

3 回答 3

6

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

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

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

演示:

>>> 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可以派上用场。

于 2013-06-04T18:42:37.213 回答
0

我会建议这种方法:

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

test1
test2
something else
>>>
于 2013-06-04T18:46:24.407 回答
-1

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

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

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

于 2013-06-04T18:51:14.847 回答