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

如何从此字符串列表中获取特定字符串?我需要goodTime99li[1]字符串中找到它的确切位置

if value.find("goodTime99") != -1:我知道如果我给出整个字符串会起作用is_it_possible_time100:goodTime99

否则如何通过搜索goodTime99而不是搜索来确定位置is_it_possible_time100:goodTime99value.index("goodTime99")给出一个错误。

我不是在寻找要搜索的整个字符串,value.index("is_it_possible_time100:goodTime99")这很好,但我不想要这个。无论如何要这样做?

4

4 回答 4

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

如果您需要确切的位置:

>>> next((i for i, s in enumerate(value) if "goodTime991" in s), -1)
1

或者:

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
于 2012-10-19T08:30:42.660 回答
2

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

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

最简单的方法可能是:

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

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

In [335]: indexs = []

In [336]: for x in value:
   .....:     if x.find("goodTime99") > -1:
   .....:         indexs.append(value.index(x))
   .....:

In [337]: print indexs
[1]

In [338]: int(*indexs)
Out[338]: 1
于 2012-10-19T08:41:25.340 回答
1

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

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

如果你只想要索引,那么

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

例如,这就是我得到的:

>>> 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]
于 2012-10-19T08:45:43.340 回答
0

您只需要依次搜索每个单独的字符串:

for s in value:
  if s.find("goodTime99"):
     print "found in", s
     break
于 2012-10-19T08:25:54.560 回答