>>> my_words = 'ABC 123 456 www'
>>> my_words
'ABC 123 456 www'
>>> import re
>>> p = re.compile(r'\d{3}')
>>> p.findall(my_words)
['123', '456']
如果我想获得13和46,如何编写编译规则?
答案 0 :(得分:0)
如果你想要的是扩展你的解决方案以使用任何长度的数字,那么你可以使用方法str.isdigit
在没有regexp的情况下完成此操作,该方法检查字符串是否仅由数字组成。
my_words = 'ABC 123 456 www 13 46'
numbers = [word for word in my_words.split() if word.isdigit()]
numbers # ['123', '456', '13', '46']
如果你想要的是从数字中删除中间数字,那么你可以使用捕获组re
来完成。
my_words = 'ABC 123 456 www'
numbers = list(map(''.join, re.findall(r'(\d)\d(\d)', my_words)))
numbers # ['13', '46']
答案 1 :(得分:0)
result = [w[0] + w[-1] for w in my_words.split() if len(w) == 3 and w.isdigit()]