Please enable Javascript to view the contents

【5种方法】Python判断字符串是否包含子串

 ·  ☕ 2 分钟

习惯于写JavaScript,当用python判断字符串是否包含某子串,第一时间想到indexOf,果然python字符串确实有index方法。

String.index() 方法

Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内。如果str不在 string中会报一个异常。

>» “javap|python|ruby”.index(“python”) 6 »> “javap|python|ruby”.index(“pythonic”) Traceback (most recent call last): File “”, line 1, in ValueError: substring not found

index()方法是可用的,但**如果str不在 string中会报一个异常,**就需要写一个方法把这index产生的错误包起来,再把返回一个数值或真假判断。

这就不pythonic了。好在python有其它更简单的方法:

in 运算符

>» longstring = “www.mzh.ren” … substring = “mzh” … if substring in longstring: … print(“找到子串”) … else: … print(“未找到子串”) …

in 运算符会调用对象内置的__contains__ 方法,该运算符也可用于list,tuple等对象。

String.find() 方法

>» “javap|python|ruby”.index(“python”) 6 »> “javap|python|ruby”.find(“python”) 6 »> “javap|python|ruby”.find(“pythonic”) -1

String.find()与String.index()使用上类似,只是find在未找到字串时,会返回-1,如果你不想try catch错误,你应该选用find()。

String.count() 方法

String.count函数会返回字符串的子字符串出现的次数。如果没有找到子字符串,返回0。

>> “javap|python|ruby”.count(“python”) 1 »> “javap|python|ruby”.count(“pythonic”) 0

这个方法很灵活,但效率上应该(未测试,纯猜测)不如find,index。

正则表达式

正则表达式提供了一种更加灵活也更复杂的检查字符串的匹配方法。

Python内置正则表达式模块 re。re模块包含一个名为 search 函数,我们可以使用它来匹配子串,如下:

from re import search

longstring = “http://www.mzh.ren” substring = “mzh.ren”

if search(substring, longstring): print(“找到子串!") else: print(“未找到字串!")

参考资料

分享

码中人
作者
码中人
Web Developer