视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python如何查找子字符串
2020-11-27 14:23:46 责编:小采
文档


这篇文章主要介绍了Python字符串中查找子串小技巧,,需要的朋友可以参考下

如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:

#determine whether s1 is a sub
stringof s2 def isSubstring1(s1,s2): 
 tag = False 
 len1 = len(s1) 
 len2 = len(s2) 
 for i in range(0,len2): 
 if s2[i] == s1[0]: 
 for j in range(0,len1): 
 if s2[i]==s1[j]: 
 tag = True 
 
return tag

可是这是Python,我们可以利用字符串自带的find()方法,于是可以这样:

def isSubstring2(s1,s2): 
 tag = False 
 if s2.find(s1) != -1: 
 tag = True 
 return tag


悲情的事就在于此,原来Python中的关键字"in”不仅可以用于列表、元祖等数据类型,还可以用于字符串。所以,这里只需要直接一行代码搞定:

def isSubstring3(s1,s2):
 return s1 in s2


后知后觉了,惭愧;-)

类似的,假设要在字符串中,查找多个子串是否存在,并打印出这些串和首次出现的位置:

def findSubstrings(substrings,destString):
 res = map(lambda x:str([destString.index(x),x]),filter(lambda x:x in destString,substrings))
 if res:
 return ', '.join(list(res))
 
;-) very cool~


UPDATE: 如果你不习惯最后面这种看起来很复杂的语法也没关系,可以使用列表解析,更加简洁:

def findSubstrings(substrings,destString):
 return ', '.join([str([destString.index(x),x]) for x in substrings if x in destString])

下载本文
显示全文
专题