我有一個多行字符串,我想用另一行替換字符串的最後一行。我如何最有效地做到這一點?如何有效地替換字符串中的最後一行?
回答
分割上的最後一個換行符並附加一個新行:
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
可能會有用。
我建議這種做法:
>>> 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之外的所有內容,並將其替換爲替換字符串。
使用're'絕對是最大的開銷! OP的問題是關於**最有效的方法**來做到這一點。 –
- 1. 有條件地替換字符串的最後一個字符
- 2. 如何有效地替換字符串中的字符
- 3. Java:如何替換字符串中的最後一個字符
- 4. 如何替換隻有一個字符,並且最後一個字符串
- 5. 替換字符串中的最後一個字符
- 6. 替換字符串中的最後一個字符javascript
- 7. 替換字符串中的最後一個字符
- 8. 替換字符串中最後一次出現的字符
- 9. 如何替換最後一個字符後的所有文本
- 10. 如何有效地成對替換字符串
- 11. 替換字符串中最後出現的子字符串
- 12. 如何替換字符串中字符的最後一個實例?
- 13. 如何用VB6替換字符串中的最後一個字符?
- 14. 如何替換字符串中最後一個逗號的'&'字符?
- 15. 替換字符的最後一次出現的字符串
- 16. 替換字符串中的最後一個字
- 17. Javascript/jQuery - 替換字符串中最後一個字的出現
- 18. 替換字符串數組中的最後一個字母Javascript
- 19. 如何在一個字符串中遞歸地替換字符
- 20. 找到一個字符串,並更有效地替換它
- 21. 陣的字符串替換隻有最後一個元素
- 22. 替換字符串的最後一個字符
- 23. 使用JavaScript替換字符串的最後一個字符
- 24. 替換多個字符串的最後一個字符PHP
- 25. 如何在PowerShell中有效地轉換一系列字符串?
- 26. 如何用另一個字符串替換字符串只在每行的最後一個字上
- 27. 的Java:替換字符串的最後一個字符和字符串
- 28. 從Java中的另一個字符串列表中替換字符串的最後一個子字符串的最有效方法
- 29. 如何替換XML字符串中的無效字符?
- 30. 替換模式後的字符串的最後一部分
我忘了拖尾換行符+1! –
我根本不會去掉尾隨的換行符,只是認爲最後一行在這種情況下是空白的。 – Cairnarvon
@Cairnarvon:這完全取決於上下文。在這種情況下,省略'.rstrip()'調用並設置好。 –