【问题标题】:Examples for string find in PythonPython中的字符串查找示例
【发布时间】:2010-10-15 01:21:44
【问题描述】:

我试图找到一些例子,但没有运气。有人知道网上的一些例子吗?我想知道它找不到时返回什么,以及如何从头到尾指定,我猜是0,-1。

【问题讨论】:

标签: python string find


【解决方案1】:

试试

myString = 'abcabc'
myString.find('a')

这会给你索引!!!

【讨论】:

  • 嗨@Dave Brown,你测试你的代码了吗?我想你会发现它没有缩进,因为你打错了
【解决方案2】:

来自the documentation

str.find(sub[, start[, end]])

返回字符串中的最低索引,其中子字符串 sub 在切片 s[start:end] 中找到。可选参数 startend 被解释为切片符号。如果未找到 sub,则返回 -1

所以,举几个例子:

>>> my_str = 'abcdefioshgoihgs sijsiojs '
>>> my_str.find('a')
0
>>> my_str.find('g')
10
>>> my_str.find('s', 11)
15
>>> my_str.find('s', 15)
15
>>> my_str.find('s', 16)
17
>>> my_str.find('s', 11, 14)
-1

【讨论】:

    【解决方案3】:

    如果 x 是一个字符串并且您搜索 y 这也是一个字符串,它们有两种情况: 案例 1: y 存在于 x 中,所以 x.find(y) = y 在 x 中的索引(位置)。 case 2: y 不存在所以 x.find (y) = -1 这意味着在 x 中找不到 y。

    【讨论】:

      【解决方案4】:

      试试这个:

      with open(file_dmp_path, 'rb') as file:
      fsize = bsize = os.path.getsize(file_dmp_path)
      word_len = len(SEARCH_WORD)
      while True:
          p = file.read(bsize).find(SEARCH_WORD)
          if p > -1:
              pos_dec = file.tell() - (bsize - p)
              file.seek(pos_dec + word_len)
              bsize = fsize - file.tell()
          if file.tell() < fsize:
              seek = file.tell() - word_len + 1
              file.seek(seek)
          else:
              break
      

      【讨论】:

        【解决方案5】:

        如果要在文本中搜索字符串的最后一个实例,可以运行 rfind。

        例子:

           s="Hello"
           print s.rfind('l')
        

        输出:3

        *无需导入

        完整语法:

        stringEx.rfind(substr, beg=0, end=len(stringEx))
        

        【讨论】:

          【解决方案6】:

          老实说,这就是我在命令行上打开 Python 并开始胡闹的那种情况:

           >>> x = "Dana Larose is playing with find()"
           >>> x.find("Dana")
           0
           >>> x.find("ana")
           1
           >>> x.find("La")
           5
           >>> x.find("La", 6)
           -1
          

          Python 的解释器使这种实验变得容易。 (对于具有类似解释器的其他语言也是如此)

          【讨论】:

          • IPython 让这种事情变得更好。
          【解决方案7】:

          find( sub[, start[, end]])

          返回找到子字符串 sub 的字符串中的最低索引,使得 sub 包含在范围 [start, end] 中。可选参数 start 和 end 被解释为切片表示法。如果未找到 sub,则返回 -1。

          来自the docs

          【讨论】:

            【解决方案8】:

            你也可以使用str.index

            >>> 'sdfasdf'.index('cc')
            Traceback (most recent call last):
              File "<pyshell#144>", line 1, in <module>
                'sdfasdf'.index('cc')
            ValueError: substring not found
            >>> 'sdfasdf'.index('df')
            1
            

            【讨论】:

            • 你为什么会选择一个而不是另一个?
            • 在我看来,它会引发错误而不是返回代码,这更像是 pythonic。
            • 异常不应用于流量控制。因此,只有在没有匹配异常的情况下才使用 index()。
            • @Wahnfrieden:使用异常完全是 Pythonic。当然不值得投反对票。
            • @aehlke 事实上,在 Python 中,使用异常来控制流是很常见的,甚至推荐:stackoverflow.com/questions/6092992/…
            【解决方案9】:

            我不确定你在寻找什么,你的意思是find()

            >>> x = "Hello World"
            >>> x.find('World')
            6
            >>> x.find('Aloha');
            -1
            

            【讨论】:

            • 谢谢,如果找不到,您会得到什么?
            • 谢谢,但为什么这里是-1,而不是索引?我认为 python 更喜欢异常而不是特殊的返回值。
            • 谢谢SilentGhost,我用了你的方法。
            • find 和 index 是相同的功能,但在不匹配时会产生不同的结果。 Python 通常可能更喜欢异常,但许多用户希望也有一个非异常提升查找索引方法,尤其是几乎所有其他语言都是这样做的。
            • 这对我很有用 - 完全忘记了 0 结果实际上意味着匹配!
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-25
            • 2014-07-10
            • 2021-08-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多