4

以下の文字列のリストがありました

some_list = ['9196358485','9966325645','8846853128','8-4-236/2','9-6-32/45','Need to fetch some strings']

上記の文字列から、で始まらない文字列のみ91,9,8が必要ですが、で始まる文字列が必要です8-, 9-

以下は私のコードです

[i for i in some_list if all(not i.startswith(x) for x in ['91','8','9'])]

結果:

['Need to fetch some strings']

上記で['91','8','9']は、条件として正しい文字列を削除していますが、リストからも削除し9 and 8たくありません。実際には、で始まる文字列を上記のように無視し、で始まる文字列を上記のコードで、で始まる文字列を取得し、文字列がで始まるときに無視するという概念を使用して、1 行に 2 つの条件を記述できますか。9-, 8-9 and 89- and 8-8-,9-9 or 8

誰でも私にこれを行う方法を教えてください.............

編集されたコード:

これが別の質問だと思わない場合は、すべてのサポートに感謝します。以下のコードが機能しない実際の出力がいくつかありました

some_list = ['Mr K V  Prasad Reddy(MD)',
 '+(91)-9849633132, 9959455935',
 '+(91)-9849633132',
 'Near NRI College,Opp Vijaya Bank,Nizam Pet Road,Nizampet,Hyderabad - 502102',
 '9196358485',
 '9966325645', 
 '8846853128',
 '8-4-236/2',
 '9-6-32/45',
 'Need to fetch some strings']

正規表現を使用して bwlow コードを適用すると、次の出力 結果が得られました。

['Mr K V  Prasad Reddy(MD)',
 '+(91)-9849633132, 9959455935',
 '+(91)-9849633132',
 'Near NRI College,Opp Vijaya Bank,Nizam Pet Road,Nizampet,Hyderabad - 502102',
 '8-4-236/2',
 '9-6-32/45',
 'Need to fetch some strings']

実際には、リストからすべての電話番号が必要なわけではないので、上記の形式になる場合が91あり8ます。9

これらすべての電話番号をリストから削除するにはどうすればよいでしょうか?

4

1 に答える 1

6

正規表現を使用します。

>>> import re
>>> [i for i in some_list if not re.match(r"[98]\B|+\(91\)", i)]
['8-4-236/2', '9-6-32/45', 'Need to fetch some strings']

\Bは英数字文字列内でのみ一致するため、 と の間では一致しますが と の間では一致9しませ1ん。9-

于 2012-08-07T07:23:11.780 に答える