value = ["python:guru-age20",
"is_it_possible_time100:goodTime99",
"hmm_hope_no_onecanansswer"]
如何从此字符串列表中获取特定字符串?我需要从goodTime99
字符串及其确切位置
li[1]
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")
很好,但我不想要这个。无论如何要做到这一点?
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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]
答案 3 :(得分:0)
您只需依次搜索每个字符串:
for s in value:
if s.find("goodTime99"):
print "found in", s
break