ValueError:找不到子字符串 - 真的卡住了

时间:2016-09-24 07:47:36

标签: python-2.7

我一直收到这个错误:

  

文件“abc.py”,第19行,在findBetween start = s.index(first)+中   len(first)ValueError:未找到子字符串

运行此代码:

   def findBetween(s, first, last):
        start = s.index(first) + len(first)
        end = s.index(last)
        return (s[start:end])

我无法弄清楚代码有什么问题。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我无法弄清楚你想要做什么,但是如果你想创建一个函数来返回两个字符之间的字符串部分,这段代码将起作用

def findBetween(s, first, last):
  start=s.index(first)+1
  end=s.index(last)
  return s[start:end]
print findBetween("ahellob","a","b")

答案 1 :(得分:0)

如果您搜索的值未包含在字符串中,则

index()会引发异常。如果您搜索的数组中的索引不包含您要查找的值,也会发生相同的情况。您的函数中还存在另一个(小)缺陷:如果在end匹配之前找到start匹配,即使在找到另一个end匹配后,您也会返回一个空字符串开始比赛。

这可能有点矫枉过正,但您可以在此处使用re。使用此:

import re
m = re.search("ab(.*?)cd", "abdddcd")
if m: # Does not fail if string is not found
    print m.group(1) # Prints 'ddd'