如何在字符串中获得前后匹配?

时间:2016-11-18 07:43:48

标签: python string python-2.7 python-3.x

我希望在字符串中获得一个after和before匹配。

例如,使用以下字符串:

"Hello I am Jim!"

搜索字符串为:"I am",搜索字符串前的匹配应为:"Hello",之后的匹配应为:"Jim!"

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:5)

使用str.partition正是这样做的:

  

S.rpartition(sep) -> (head, sep, tail)

     

sep开始,在S的末尾搜索分隔符S,然后返回它之前的部分,分隔符本身以及之后的部分。

所以,使用你的示例字符串:

before, search_str, after = "Hello I am Jim!".partition("I am ")

现在beforesearch_strafter是:

>>> print(before)
Hello 
>>> print(search_str)
I am
>>> print(after)
Jim!

str.partition还会将分隔符作为返回元组中的中间元素。如果您不需要,str.split(separator)就足够了。

答案 1 :(得分:5)

您也可以使用split()

>>> before, after = "Hello I am Jim!".split("I am")
>>> before
'Hello '
>>> after
' Jim!'

答案 2 :(得分:0)

答案是一种很好的上诉方式,但你也可以使用python字符串操作找到最基本的操作来获得相同的点。

s = "Hello I am Jim!"
print s.find('I am')
for i in range(s.find('I am')):
    print s[i],
for i in range(s.find('I am')+len('I am'),len(s)):
    print s[i],
python team.py 
6
H e l l o     J i m !

以多种方式实现,然后选择最简单的方法

答案 3 :(得分:0)

这是另一种方式:

>>> import re
>>> str1 = "Hello I am Jim!"
>>> before, after = re.split(" I am ", str1)
>>> before
'Hello'
>>> after
'Jim!'