我希望在字符串中获得一个after和before匹配。
例如,使用以下字符串:
"Hello I am Jim!"
搜索字符串为:"I am"
,搜索字符串前的匹配应为:"Hello"
,之后的匹配应为:"Jim!"
。
我怎样才能做到这一点?
答案 0 :(得分:5)
使用str.partition
正是这样做的:
S.rpartition(sep) -> (head, sep, tail)
从
sep
开始,在S
的末尾搜索分隔符S
,然后返回它之前的部分,分隔符本身以及之后的部分。
所以,使用你的示例字符串:
before, search_str, after = "Hello I am Jim!".partition("I am ")
现在before
,search_str
和after
是:
>>> 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!'