我有一个输入列表:
list_1 = ['29','560001','08067739333','560037002','29AAACC0462F1Z0','55XX1XXX19','07S23X09','98561XXX1X9']
我试过了:
output_list = [i for i in list_1 if 'X' in i or i.isnumeric()==True]
给出带有错误的额外元素“ 07S23X09”:
output_list = ['29','560001','08067739333','560037002','55XX1XXX19','07S23X09','98561XXX1X9']
预期的输出是带有数字的列表以及带有数字和特定字符X的元素,否则应丢弃其他元素:
output_list = ['29','560001','08067739333','560037002','55XX1XXX19','98561XXX1X9']
您可以使用
import re
list_1 = ['29','560001','08067739333','560037002','29AAACC0462F1Z0','55XX1XXX19','07S23X09','98561XXX1X9']
rx = re.compile('[0-9X]+')
print ( [x for x in list_1 if rx.fullmatch(x)] )
# => ['29', '560001', '08067739333', '560037002', '55XX1XXX19', '98561XXX1X9']
请参阅Python演示。
使用re.fullmatch('[0-9X]+', x)
,您只保留完全由数字或X
字符组成的项目。
见^[0-9X]+$
的正则表达式演示。
注意:如果字符串中必须至少包含一位数字,即,如果您想失败并因此丢弃所有Just项,则XXX
可以使用
^X*[0-9][0-9X]*$
或者,^(?=X*[0-9])[0-9X]+$
。请参阅regex演示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句