在python中的列表中使用startswith()函数

Shi*_*dla 4 python list

我的列表中包含以下字符串

some_list = ['9196358485','9966325645','8846853128','8-4-236/2','9-6-32/45','Need to fetch some strings']
Run Code Online (Sandbox Code Playgroud)

从上面的字符串我只想要不以字母开头91,9,8但希望以字符串开头的字符串8-, 9-

以下是我的代码

[i for i in some_list if all(not i.startswith(x) for x in ['91','8','9'])]
Run Code Online (Sandbox Code Playgroud)

结果:

['Need to fetch some strings']
Run Code Online (Sandbox Code Playgroud)

在上面通过使用['91','8','9']条件是删除从9 and 8正确开始的字符串,但我不想9-, 8-也从列表中删除,实际上我的意思是如果开头的字符串9 and 8应该被忽略,如上所述和字符串开头9- 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']
Run Code Online (Sandbox Code Playgroud)

当我使用正则表达式应用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']
Run Code Online (Sandbox Code Playgroud)

其实我不想列表中的所有电话号码,所以他们会按上述格式有时起91,有时8有时9

我们如何从列表中删除所有这些电话号码?

Tim*_*ker 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']
Run Code Online (Sandbox Code Playgroud)

\B仅在字母数字字符串内匹配,因此它在91之间匹配,但不在9和之间匹配-.

  • 如果您明确要在9或8之后检查短划线,您还可以使用正则表达式`[98](?! - )`. (3认同)