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']as 条件是删除以正确开头的字符串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']

当我使用正则表达式应用 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仅在字母数字字符串中匹配,因此它在 and 之间匹配91但在9and之间不匹配-

于 2012-08-07T07:23:11.780 回答