例如,以下正则表达式从字符串中提取所有“非数字”
re.sub(r"\b[0-9]+\b", "", "5 1 inch c5 bolts 10")
' inch c5 bolts '
我该怎么做?也就是说,如何提取数字'5 1 10'? (注意:c5不是数字,因此不应包含在结果中)
答案 0 :(得分:5)
看起来你已经知道了单词边界......你只是在找一个单词边界,一串数字(只有数字)然后是另一个单词边界。正则表达式为\b\d+\b
:
>>> re.findall(r'\b\d+\b', "5 1 inch c5 bolts 10")
['5', '1', '10']
答案 1 :(得分:1)
由于您只是在寻找非负整数,因此您可以使用str.isdigit
方法在没有正则表达式的情况下执行此操作。
s = "5 1 inch c5 bolts 10"
a = [u for u in s.split() if u.isdigit()]
print(a)
b = ' '.join(a)
print(repr(b))
<强>输出强>
['5', '1', '10']
'5 1 10'
如果你真的想要一个数字列表作为整数,你可以像这样修改列表理解:
a = [int(u) for u in s.split() if u.isdigit()]
print(a)
<强>输出强>
[5, 1, 10]