如果项目不以给定模式结尾,则打印它 python
我有一个列表:
mylist = ['summer_C','summer_C1','summer_P','summer_C123','summer_p32']
我想打印出所有不以以下模式结尾的项目:
'_C' or '_C%' (int)
所以可能是像 '_C'、'_C1' 或 '_C2939' 这样的东西
我尝试过的方法:
for item in mylist:
if item[-2:] != '_C' or item[-x:] != '_C(INT)'
print item
如你所见,这个方法不是很灵活,我该怎么做呢?
2 个回答
2
你可以使用正则表达式来解决这个问题:
import re
r = re.compile(r'_C\d+$')
mylist = ['summer_C','summer_C1','summer_P','summer_C123','summer_p32']
print [x for x in mylist if not r.search(x)]
#['summer_C', 'summer_P', 'summer_p32']
正则表达式的解释:http://regex101.com/r/wG3zZ2#python
0
你可以使用一个正则表达式:
import re
numeric_tail = re.compile('_C\d*$')
for item in mylist:
if not numeric_tail.search(item):
print item
这个模式会匹配字面意思上的 _C
,后面可以跟着0个或多个数字,并且这个匹配是在字符串的末尾进行的,用 $
来表示。
示例:
>>> import re
>>> numeric_tail = re.compile('_C\d*$')
>>> mylist = ['summer_C','summer_C1','summer_P','summer_C123','summer_p32']
>>> for item in mylist:
... if not numeric_tail.search(item):
... print item
...
summer_P
summer_p32