提问人:YksYiZov 提问时间:11/13/2023 最后编辑:FObersteinerYksYiZov 更新时间:11/13/2023 访问量:76
当我使用 Python 查找子字符串时,我不明白为什么会发生这种情况
When I use Python to find substring, I can't understand why this happens
问:
str1 = "E2ab"
str2 = "E2"
if str1.find(str2):
print("find it")
我以为它会打印“找到它”,但实际上,它不会。为什么?
Python 版本为 3.8。
我做了 encoding=utf-8,但它仍然不起作用。
答:
1赞
Mureinik
11/13/2023
#1
find
返回可以找到的位置的索引。在本例中,正好出现在 的开头,因此返回。 是 false-y,因此不满足条件。您可以显式检查返回的索引是否为非负数:str1
str2
str2
str1
0
0
if
if str1.find(str2) >= 0
1赞
Bruno
11/13/2023
#2
发生这种情况是因为 Python 中 find 方法的返回值。如果在字符串中找到子字符串,则 find 方法返回子字符串的最低索引。如果未找到,则返回 -1。
在本例中,str1.find(str2) 返回 0,因为子字符串“E2”从字符串“E2ab”中的索引 0 开始。在 if 语句中使用它时,在布尔上下文中将 0 视为 False。除 0 以外的任何数字都被视为 True。
str1 = "E2ab"
str2 = "E2"
if str1.find(str2) != -1:
print("find it")
这将打印“find it”,因为您正在显式检查 find 方法是否在 -1 以外的索引处找到了子字符串。
-1赞
Lourenço Monteiro Rodrigues
11/13/2023
#3
String.find()
返回子字符串第一次出现的索引,如果未找到子字符串,则返回 -1。在本例中,返回是因为子字符串从该索引开始,并且 if 语句将零计算为 false。对于 sedired 行为,您可以使用 或0
string2 in string1
string1.contains(string2)
评论
if
-1
str2
str1
str2 in str1
if str2 in str1: