2
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")はありませんが、これは必要ありません。とにかくこれを行うには?

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

1行の回答が必要な場合は、

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 に答える