Pyhton find() 函数的意外结果

问题描述 投票:0回答:2

我有这根绳子

string = "DLR1=A,B,C,D,E,F,G|DLR2=A,B,C,D,E,F,G|DLR=A,B,C,D,E,F,G|"

我想找到 DLRDLR1DLR2 的索引。

但是,当我使用 Python find() 函数时,我没有像我预期的那样获得 3 个不同的索引。

据我了解,该函数查找第一次出现的子字符串(DLR、DLR1、DLR2)并返回索引。

如果这是真的,我不明白为什么 DLR 和 DLR1 具有相同的起始索引,但 DLR2 具有不同的起始索引。

我尝试过的事情

运行此代码时:

string = "DLR1=A,B,C,D,E,F,G|DLR2=A,B,C,D,E,F,G|DLR=A,B,C,D,E,F,G|"

print(string.find('DLR'))

print(string.find('DLR1'))

print(string.find('DLR2'))

输出:

0
0
19

我发现这输出了预期的结果:

print(string.find('DLR='))

print(string.find('DLR1='))

print(string.find('DLR2='))

输出:

38
0
19

我的问题是为什么会发生这种情况以及这是预期的吗?

python string find
2个回答
1
投票

str.find() 查找第一个出现的位置

在你的第一个片段中:

DLR
位于索引 0(因为它是
DLR1

的子串)

DLR1
也位于索引0

DLR2
位于索引 19

在你的第二个片段中:

DLR=
位于索引 38

DLR1=
位于索引 0

DLR2=
位于索引 19


0
投票

因为“DLR”是“DLR1”的子字符串。在这种情况下,DLR1 是第一次出现,因此查找操作将为“DLR1”和“DLR”返回 0。 “DLR”在本文中出现了 3 次!

您应该尝试找到以下字符串:“DLR =”,“DLR1 =”,“DLR2 =”,它应该可以工作!

© www.soinside.com 2019 - 2024. All rights reserved.