我有一个单词列表,其中的模式是“term”或“termNUM”,例如“term”或“term02”。 我想保存以数字结尾的所有术语,但删除那些纯粹是字母的术语。
我对正则表达式全新,我尝试了一些选项,并获得以下内容:
new_list = [x for x in old_list if re.match("[(^a-zA-Z_)\d]", x)]
它不起作用,我知道它只需要在某处进行一些小调整,但由于我在正则表达式方面的技能有限,所以不能快速完成。
提示非常感谢。
答案 0 :(得分:3)
r".*\d"
这是任何字符(.
),任意次(*
)后跟一个数字(\d
)。你的列表理解是正确的。
您也可以
[x for x in old_list if x[-1].isdigit()]
假设空字符串不在列表中。我更喜欢这个选项,因为它更清楚它的作用。
答案 1 :(得分:3)
为什么要使用正则表达式,只需检查最后一个字符是否是数字。即。
new_list = [x for x in old_list if x[-1].isdigit()]
答案 2 :(得分:2)
>>> list = ["term", "term2", "term200"]
>>> new_list = [x for x in list if re.match("^[a-zA-Z_]+\d+$", x)]
>>> new_list
['term2', 'term200']