代码之家  ›  专栏  ›  技术社区  ›  f-person

ValueError:未找到子字符串

  •  -1
  • f-person  · 技术社区  · 6 年前

    我试着检查一下 lower[lower.index(j)+shift]>26 ,但它返回了

    ValueError:在lower中找不到子字符串。指数(j)+移位;26

    我的代码:

    def build_shift_dict(self, shift):
        lower=string.ascii_lowercase
        upper=string.ascii_uppercase
        d={}
        for j in self.message_text:
            if lower.index(j)+shift>26: # or if lower[lower.index(j)+shift]>26:
                print('something')
            if j.islower():
                d[j]=lower[lower.index(j)+shift]
            else:
                d[j]=upper[upper.index(j)+shift]
        return d
    

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Cole Howard    6 年前

    iterable。如果在iterable中找不到“obj”,index(obj)方法将引发值错误。

    所以有些东西 self.message_text 不属于 string.ascii_lowercase

    尝试将该行包装在Try-except子句中。

    try:
        lower.index(j)
    except ValueError:
        print('{} not found in the search space.'format(j))
        continue