我有一个多行字符串,我想用不同的行替换字符串的最后一行。我如何最有效地做到这一点?
问问题
95 次
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 回答