如何在字符串中搜索子字符串,但从某个索引开始
How to search for a substring in a string, but from a certain index onward
我不是 python 方面的专家,由于它与工作相关,我可能需要更改一些变量和信息。
所以我有一个来自 API 请求的长字符串,我在其中寻找用户的信息,为了确保我只有用户信息,我将他们的 ID 与 .find( ID)显示 ID 在字符串中的索引(用户信息的中间)。在那之后我想要的是上升
string and search for the tag that starts the information
`**<resource>** and down to the tag that end the information ****</resource>**.`
**id_position = string.find(id)**
**upper = string[:id_position].rfind("<resource>")** to go in reverse order up the string and find the first match , and works fine
but when i use **lower = string[id_position].find("</resource>")**
,而不是正常地从 id 位置向下搜索直到找到第一个匹配项,它实际上搜索整个原始字符串,就像从第一个位置搜索 string[0] 以后。
当我打印时
**string[:id_position] + string[id_position:] == string** ,
它表明这是真的,所以我猜查找功能并没有像我认为的那样帮助我。
所以我的问题是,我如何在 id 索引之后搜索我的特定子字符串?
我知道这很难理解,但我希望你们中的一些人能明白我的意思
供参考,数据是这样的
.<resource>
name=
ip=
.</resource>
.<resource>
name2=
ip2=
</resource>
.<resource>
name=
ip2=
.</resource>
您是否尝试过使用 find()
的可选参数 start
和 end
?
id_position = string.find(id)
upper = string.find("</resource>", id_position) + len("</resource>")
lower = string.rfind("<resource>", 0, id_position)
print(repr(string[lower:upper]))
> '<resource>\n name2=\n ip2=\n</resource>'
我不是 python 方面的专家,由于它与工作相关,我可能需要更改一些变量和信息。
所以我有一个来自 API 请求的长字符串,我在其中寻找用户的信息,为了确保我只有用户信息,我将他们的 ID 与 .find( ID)显示 ID 在字符串中的索引(用户信息的中间)。在那之后我想要的是上升
string and search for the tag that starts the information
`**<resource>** and down to the tag that end the information ****</resource>**.`
**id_position = string.find(id)**
**upper = string[:id_position].rfind("<resource>")** to go in reverse order up the string and find the first match , and works fine
but when i use **lower = string[id_position].find("</resource>")**
,而不是正常地从 id 位置向下搜索直到找到第一个匹配项,它实际上搜索整个原始字符串,就像从第一个位置搜索 string[0] 以后。
当我打印时
**string[:id_position] + string[id_position:] == string** ,
它表明这是真的,所以我猜查找功能并没有像我认为的那样帮助我。
所以我的问题是,我如何在 id 索引之后搜索我的特定子字符串?
我知道这很难理解,但我希望你们中的一些人能明白我的意思
供参考,数据是这样的
.<resource>
name=
ip=
.</resource>
.<resource>
name2=
ip2=
</resource>
.<resource>
name=
ip2=
.</resource>
您是否尝试过使用 find()
的可选参数 start
和 end
?
id_position = string.find(id)
upper = string.find("</resource>", id_position) + len("</resource>")
lower = string.rfind("<resource>", 0, id_position)
print(repr(string[lower:upper]))
> '<resource>\n name2=\n ip2=\n</resource>'