python3实现从字符串str1中匹配字符串str2,并返回匹配的结果(与count()有区别)

本文介绍两个Python3函数,countLetter()用于查找单字符在列表中的索引,countSubString()用于查找子字符串在父字符串中的出现次数和位置。与内置的count()方法不同,countSubString()在特定情况下能提供更详细信息,包括匹配的原始字符串、是否区分大小写等。文章还提及了使用正则表达式的简化方法。
摘要由CSDN通过智能技术生成

小工具说明

  1. 第一个函数countLetter():用来查找给定的单字符letter在列表myStrList中的索引位置,返回值为一个列表
  2. 第二个函数countSubString():
    2.1 查找字符串childStr在字符串fatherStr中出现的次数及开始位置,lettersToLower设置为0时区分大小写,设置为非0时不区分大小写
    2.2 返回值为一个字典:

{
‘childStr_original’: ‘abcabc’, (用来匹配的原始子字符串)
‘fatherStr_original’: ‘abcabcabcabcabcabc’, (用来匹配的原始父字符串)
‘flag’: True, (True-匹配成功,False-匹配失败)
‘count’: 5, (匹配到的个数)
‘index_start’: [0, 3, 6, 9, 12] (匹配到的下标索引列表)
}

  1. 说明:python3中str的count内嵌方法获取的结果和该小工具有区别,如’aaaaa’.count(‘aa’)=2,countLetter(‘aa’, ‘aaaaa’)=4

源码

# 计算一个字符letter在给定的list中的位置
def countLetter(letter, myStrList):
    if len(letter) != 1:
        return False
    if letter not in myStrList:
        return False
    tem = []
    for i in range(0,len(myStrList)):
        if letter == myStrList[i]:
            tem.append(i)
    return tem

# 查找字符串childStr在字符串fatherStr中出现的次数及开始位置,lettersToLower设置为0时区分大小写,设置为非0时不区分大小写
def countSubString(childStr, fatherStr, lettersToLower = '0'):
    resDict = {
   }
    childStr = str(childStr)
    fatherStr = str(fatherStr)
    resDict['childStr_original'] = childStr
    resDict['fatherStr_original'] = fatherStr

    if str(lettersToLower) != '0':
        childStr = childStr.lower()
        fatherStr = fatherStr.lower()

    # 对比用的子字符串如果为空或者不在目标字符串中,直接返回False
    if childStr not in fatherStr or len(childStr) < 1:
        resDict['flag'] = False
        resDict['count'] = 0
        resDict['index_start'] = []
        return resDict
    
    # 两个字符串相同时快速处理
    if childStr == fatherStr:
        resDict['f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值