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

时间:2012-08-07 07:21:31

标签: python list

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

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开头的字符串是正确的,但我不希望9-, 8-也从列表中删除,实际上我的意思是,如果以9 and 8开头的字符串应该如上所述被忽略,并且不应忽略以9- and 8-开头的字符串,我们是否可以在一行中编写两个条件,其概念是以{开头的字符串开头{1}}并忽略在我编写的上述代码中字符串以8-,9-开头时。

任何人都可以让我知道锄头这样做.............

已编辑的代码:

感谢所有人的支持,如果你不认为这是另一个问题我有一些实际的输出,下面的代码不起作用

9 or 8

当我使用正则表达式应用bwlow代码时,我得到了以下输出 的结果:

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']

实际上我不希望列表中的所有电话号码,因此它们将采用上述格式,有时从['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

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

1 个答案:

答案 0 :(得分: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仅在字母数字字符串中匹配,因此它在91之间匹配,但在9-之间不匹配。