【问题标题】:how to find whether a string is contained in another string如何判断一个字符串是否包含在另一个字符串中
【发布时间】:2011-02-05 03:19:33
【问题描述】:
a='1234;5'
print a.index('s')

错误是:

> "D:\Python25\pythonw.exe"  "D:\zjm_code\kml\a.py" 
Traceback (most recent call last):
  File "D:\zjm_code\kml\a.py", line 4, in <module>
    print a.index('s')
ValueError: substring not found

谢谢

【问题讨论】:

标签: python string


【解决方案1】:

尝试改用find() - 这会告诉你它在字符串中的位置:

a = '1234;5'
index = a.find('s')
if index == -1:
    print "Not found."
else:
    print "Found at index", index

如果你只是想知道是否字符串在里面,你可以使用in:

>>> print 's' in a
False
>>> print 's' not in a
True

【讨论】:

    【解决方案2】:
    print ('s' in a)     # False
    print ('1234' in a)  # True
    

    如果您也需要索引,但不希望引发异常,请使用 find

    print a.find('s')    # -1
    print a.find('1234') # 0
    

    【讨论】:

      【解决方案3】:

      如果您只想检查子字符串是否在字符串中,可以使用in 运算符。

      if "s" in mystring:
         print "do something"
      

      否则,您可以使用 find() 并检查 -1(未找到)或使用 index()

      【讨论】:

        【解决方案4】:

        str.find()str.index() 几乎相同。最大的区别是,当找不到字符串时,str.index() 会抛出一个错误,就像你得到的那样,而str.find() 返回 -1,就像其他人发布的那样。

        有 2 个姊妹方法,称为 str.rfind()str.rindex(),它们从字符串的末尾开始搜索并朝着开头工作。

        此外,正如其他人已经表明的那样,in 运算符(以及 not in)也完全有效。

        最后,如果你想在字符串中寻找模式,你可以考虑正则表达式,尽管我认为太多人在使用它们时过度使用它们。换句话说,“now you have two problems。”

        就我目前掌握的所有信息而言,就是这样。但是,如果您正在学习 Python 和/或学习编程,我给我的学生的一个非常有用的练习是尝试自己在 Python 代码中构建 *find()*index(),甚至是 innot in (虽然是函数)。您将获得遍历字符串的良好实践,并且您将更好地了解现有字符串方法的工作原理。

        祝你好运!

        【讨论】:

        • 正则表达式有点矫枉过正?!为什么?对于大多数字符串匹配算法,可能没有更高效、更清晰的编程方法了。
        • 对于可以使用 find() 和 index() 等工具完成的简单搜索,正则表达式不是一个好的选择,因为如果不仔细检查它们往往难以阅读。能够略过正则表达式并捕捉到它试图做的所有细节是很少见的。它们对于复杂的模式非常有效,但可维护性可能是一个问题。
        【解决方案5】:
        def substr(s1, s2):  # s1='abc' , s2 = 'abcd'
            i = 0
            cnt = 0
            s = ''
            while i < len(s2):
                if cnt < len(s1):
                    if s1[cnt] == s2[i]:
                        cnt += 1
                        s += s2[i]
                    else:
                        cnt = 0
                        s = ''
                i += 1
            if s == s1:
                print(f'{s1} is substring of {s2}')
            else:
                print(f'{s1} is not a substring of {s2}') 
        

        【讨论】:

        • 问题是什么?
        • 如果一个字符串包含另一个字符串作为子字符串。就是这个问题。
        【解决方案6】:

        这是检查字符串中是否存在子字符串的正确方法。

        定义海(str,str1):

        if(str1[0:] in str):
        
            return "yes"
        else:
            return "no"
        print(sea("sahil","ah"))
        

        【讨论】:

          【解决方案7】:

          让我们按照下面提到的来试试这个。

          方法一:

          if string.find("substring") == -1:
           print("found")
          else:
           print("not found")
          

          方法二:

           if "substring" in "string":
            print("found")
           else:
             print("not found")
          

          【讨论】:

            猜你喜欢
            • 2014-06-10
            • 2011-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-11
            • 1970-01-01
            相关资源
            最近更新 更多