如何在lis中搜索或查找特定的子字符串

2024-07-02 12:13:44 发布

您现在位置:Python中文网/ 问答频道 /正文

value = ["python:guru-age20",
         "is_it_possible_time100:goodTime99",
         "hmm_hope_no_onecanansswer"]

如何从这个字符串列表中获取特定的字符串?我需要从li[1]字符串中找到goodTime99及其确切位置

if value.find("goodTime99") != -1:我知道如果我给整个字符串is_it_possible_time100:goodTime99就可以了。在

否则,如何通过搜索goodTime99而不是搜索is_it_possible_time100:goodTime99来精确定位?value.index("goodTime99")出现错误。在

我不是要搜索整个字符串,value.index("is_it_possible_time100:goodTime99")可以,但我不想这样。不管怎样要这么做?在


Tags: no字符串列表indexisvalueithmm
3条回答

如果只想检查列表中任何字符串中是否存在"goodTime99",可以尝试:

value = ["python:guru-age20", "is_it_possible_time100:goodTime99","hmm_hope_no_onecanansswer"]
if any("goodTime99" in s for s in value):
    # found it

如果您需要确切的位置:

^{pr2}$

或者:

def find_first_substring(lst, substring):
    return next((i for i, s in enumerate(lst) if substring in s), -1)

>>> find_first_substring(value, "goodTime99")
1

这将为您提供所有匹配项以及索引(如果需要):

filter(lambda x: x[1].find("goodTime99") != -1, enumerate(value))

如果只需要索引,那么

^{pr2}$

例如,这是我得到的:

>>> value = ["python:guru-age20", "is_it_possible_time100:goodTime99","hmm_hope_no_onecanansswer"]
>>> res = [e[0] for e in filter(lambda x: x[1].find("goodTime99") != -1, enumerate(value))]
>>> res
[1]

如果你想要一个单一的答案,你可以有

In [339]: [value.index(x) for x in value if x.find("goodTime99") > -1]
Out[339]: [1]

最简单的方法是:

它将为您提供包含列表中子字符串的字符串的所有索引

^{pr2}$

相关问题 更多 >