簡體   English   中英

如何在Python中的特定字符之間插入字符串?

[英]How to insert a string between particular characters in Python?

假設我有一個包含許多字符的大型父字符串。 如何在特定的字符匹配之間插入另一個字符串(此外,還要刪除匹配的字符之間已經存在的所有字符)?

例如,保證我的largeString包含######的單個集合(6個哈希字符)。 我該如何在其中插入我的smallString ,以類似以下內容結束(我猜最好說“創建另一個字符串”,因為字符串是不可變的):

largeString = "Lorem ipsum ###### some previous text to be erased ###### dolor sit amet"
smallString = "foo bar"

newString = "Lorem ipsum ###### foo bar ###### dolor sit amet"

有任何想法嗎? 我認為這將使用一些正則表達式...

就像是

>>> import re
>>> largeString = "Lorem ipsum ###### some previous text to be erased ###### dolor sit amet"
>>> smallString = "foo bar"
>>> re.sub(r'(?<=###### ).*(?= ######)', smallString, largeString)
Lorem ipsum ###### foo bar ###### dolor sit amet'
  • (?<=###### )正向后面看。 斷言#在字符串之前

  • .*匹配任何東西

  • (?= ######)積極向前看。 斷言#跟隨字符串

要么

沒有環顧四周

>>> re.sub(r'(###### ).*( ######)', r'\1'+smallString+r'\2', largeString)
'Lorem ipsum ###### foo bar ###### dolor sit amet'

像這樣:

sections = largeString.split("######", 2)
newString = sections[0] + smallString + sections[2]

可能有一個斷言來檢查sections是否確實是三個元素的列表(即找到了兩個定界符)。

由於您的定界符是靜態字符串,除泛濫(但錯誤)的“正則表達式可以解決任何問題”的思想外,沒有什么理由退出正則表達式了,這似乎席卷了整個世界……

(?<=######)[^#]+

試試看。看演示。

https://regex101.com/r/wV5tP1/9

re.sub(r'(?<=######)[^#]+', smallString, largeString)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM