我在理解这种情况时遇到了一些麻烦。当我运行以下内容时:
def find_in_string(string, ch):
count = 0
index = 0
while 0 <= index < len(string):
if string.find(string, ch, index) != -1:
return True
find_in_string('asdfasdf', 's')
这是我得到的:
TypeError: slice indices must be integers or None or have an __index__ method
然而,通过解释器运行这样:
index = 0
if string.find('asdfasdf', 's', index) != -1:
return True
返回'True'。所以我不理解string.find如何在上面的函数中没有为起始索引传递一个整数。任何建议表示赞赏!
修改 无论出于何种原因,上述功能现在可以在再次导入字符串后工作也许咖啡太多了?
答案 0 :(得分:1)
您的误解似乎来自导入string
模块以及命名变量string
。
您无需导入模块即可使用find
,如果您确实需要导入模块以执行其他操作,则可以将变量命名为其他内容。
类型为str
而非string
。
find
不起作用。你的意思是
string.find(ch) # ', index' if you want
如果您的变量名为string
或
str.find(string, ch) # ', index' if you want
如果您的变量名为string
并且您确实想要在类/类型str
上访问它(没有理由)。
您在搜索的字符串上调用find
,除非您在类/类型上访问find
,否则不会手动将字符串传递给find
。 find
首先手动传递的参数是要搜索的字符串,后跟start
和end
索引。由于您似乎在搜索整个字符串,因此可以省略它们。