我有一个多行字符串,我想用不同的行替换字符串的最后一行。我如何最有效地做到这一点?
答案 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除外,并将其替换为替换字符串。