zoukankan      html  css  js  c++  java
  • python 字符串函数find功能拓展——查找母串内所有子串的位置

    前言  

      我们知道,字符串内置了很多功能的处理函数,其中,find、index函数都可以接受一个参数意义是作为目标子串,而返回母串中从左到右遍历时子串第一次出现的索引值(每一次调用都是从头开始,没有记忆),如果查询不到返回-1。

      如下面的例子:

      如果,子串不在母串中出现,则find函数返回-1,而index方法返回ValueError错误,这也是两者的区别,接上例:


     深入

      rindex rfind函数:功能类似,把母串从右向左遍历,找到子串第一次出现的位置,也没有记忆性。


    后续

     编写了一个函数,实现find函数类似的功能,但是这次要把所有的子串位置以列表形式返回,这是函数的功能。

     1 # coding=utf-8 
     2 def find_all(source,dest):
     3     length1,length2 = len(source),len(dest)
     4     dest_list = []
     5     temp_list = []
     6     if length1 < length2:
     7         return -1
     8     i = 0
     9     while i <= length1-length2:
    10         if source[i] == dest[0]:
    11             dest_list.append(i)
    12         i += 1
    13     if dest_list == []:
    14         return -1
    15     for x in dest_list:
    16         print("Now x is:%d. Slice string is :%s"% (x,repr(source[x:x+length2])),end=" ")
    17         if source[x:x+length2] != dest:
    18             print(" dest != slice")
    19             temp_list.append(x)
    20         else:
    21             print(" dest == slice")
    22     for x in temp_list:
    23         dest_list.remove(x)
    24     return dest_list
    25 
    26 s1="He!wworld!www.baidu.cowws.cowwppww"
    27 s2="ww"
    28 index_list = find_all(s1,s2)
    29 if index_list != -1:
    30     print("Now dest_list is:{}".format(index_list))
    31 else:
    32     print("Error finding!")

  • 相关阅读:
    应用Solaris11放置光盘修复solaris引导妨碍
    HP 3803TX 装置debian4 Linux
    释放linux细碎的内存
    linux批量查找文件内容
    Oracle 10g R2 for Solaris x86在Solaris 11上的装配
    Linux 零碎进修之shell剧本进修
    华硕易PC台式机版7月环球上市 或运转Linux
    Linux文件琐细 一分钱一分货
    linux下平安管理
    预装Windows或Ubuntu,戴尔出Mini Inspiron 8.9寸笔记本
  • 原文地址:https://www.cnblogs.com/Higgerw/p/10632285.html
Copyright © 2011-2022 走看看