繁体   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