2014-12-05 100 views
0

说我有一个很大的父字符串包含很多字符。如何在特定的字符匹配之间插入另一个字符串(并且另外擦除我的匹配字符之间的任何字符)?如何在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" 

任何想法?我认为这将使用正则表达式一点的...

+0

'###' - >'######'? – 2014-12-05 18:42:50

+0

你想要替换所有的事件或单个事件? – Cfreak 2014-12-05 18:45:37

+0

@Cfreak在较大的字符串中总是只会出现一次。 – ReactingToAngularVues 2014-12-05 18:46:59

回答

4

喜欢的东西

>>> 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' 
  • (?<=######)模型正看后面。断言#prescedes字符串

  • .*提前匹配任何

  • (?= ######)模型正的样子。断言#后面的字符串

OR

不看变通

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

尾随字符匹配不应该有6个哈希而不是3个? – ReactingToAngularVues 2014-12-05 18:47:39

+0

@Antilogical输入字符串“largeString”是否包含6或3个散列? – nu11p01n73R 2014-12-05 18:48:13

+0

它包含一组六个散列。所以我认为你的代码需要修改为:'re.sub(r'(?<= ######)。*(?= ######)',smallString,largeString)',但我不确定我的语法是否正确。 – ReactingToAngularVues 2014-12-05 18:51:59

1

像这样:

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

可能与在那里的断言来检查该sections确实的三个元素(即其被发现的两个分隔符)的列表。

由于你的分隔符是一个静态字符串,除了猖獗的(但错误的)“正则表达式可以解决任何事情”的想法似乎正在席卷世界之外,没有任何理由去拔除正则表达式......

相关问题