首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在没有内置函数的Python中查找字符串的子字符串

在没有内置函数的Python中查找字符串的子字符串
EN

Stack Overflow用户
提问于 2015-10-19 22:41:12
回答 8查看 9.6K关注 0票数 0

我正在尝试编写一些代码来查找字符串中的子字符串。到目前为止,我有这样的想法:

代码语言:javascript
复制
main = "dedicated"
sub = "cat"
count = 0
for i in range (0,len(main)):
   match = True
   if sub[0]==main[i]:
     j=0
     for j in range(0,len(sub)):
         if sub[j]!=main[i+j]:
             match = False
             print "No substring"
             break
         else:
             count=count+1
             if match == True and count == len(sub):
                 print "Substring"
                 print "Position start:",i

example“IndexError

  • "nothing”“和”“
  • ”this is a example“和"example”返回一个示例,而“
  • ”根本不返回任何

有没有人可以帮我/给我指点/改进代码,让它能正确地使用上面的要点?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-10-19 22:53:57

代码语言:javascript
复制
def index(s, sub):
    start = 0
    end = 0
    while start < len(s):
        if s[start+end] != sub[end]:
            start += 1
            end = 0
            continue
        end += 1
        if end == len(sub):
            return start
    return -1

输出:

代码语言:javascript
复制
>>> index("dedicate", 'cat')
4
>>> index("this is an example", 'example')
11
>>> index('hello world', 'word')
-1
票数 6
EN

Stack Overflow用户

发布于 2015-10-19 22:53:08

要解决您的问题,请添加以下内容:

代码语言:javascript
复制
main = "this is an example"
sub = "example"
count = 0
done = False
for i in range (0,len(main)):
   match = True
   if sub[0]==main[i]:
     j=0
     for j in range(0,len(sub)):
         if sub[j]!=main[i+j]:
             match = False
             print "No substring"
             break
         else:
             count=count+1
             if match == True and count == len(sub):
                 print "Substring"
                 print "Position start:",i
                 done = True
                 break
   if done == True:
     break

注意,在最后,你已经完成了..因此,将其设置为以变量结束程序,并中断循环。然后跳出外部循环。

然而,你确实需要修复subs可能尝试并超过main长度的问题,例如。

代码语言:javascript
复制
main = "this is an example"
sub = "examples"

在这种情况下,您需要检查j迭代器是否超出范围。我会留给你去弄清楚,因为这不是原问题的一部分。

票数 0
EN

Stack Overflow用户

发布于 2018-11-16 13:53:12

代码语言:javascript
复制
s1="gabcdfahibdgsabc hi kilg hi"
s2="hi"
count=0
l2=len(s2)
for i in range(len(s1)):
    if s1[i]==s2[0]:   
        end=i+l2
        sub1=s1[i:end]
        if s2==sub1:
            count+=1
print (count)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33217326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档