Python从字符串中提取数字
使用如下正则表达式:
# #摘要# #匹配字符串的开头。# # $匹配字符串的结尾。# # 匹配单词的边界。# # 匹配任何号码。## D匹配任何非数字字符。## x?匹配一个可选的x字符(换句话说,它匹配x字符一次或0次)。## x*匹配0个或更多x个字符。## x匹配一个或多个x字符。## x{n,m}至少匹配x个字符n次,最多匹配m次。## (a|b|c)匹配a、b或C.## (x)通常表示记住的组。您可以使用re.search函数返回对象的groups()函数来获取其值。# #正则表达式中的点通常意味着“匹配任何单个字符”的想法:
由于数字是提取出来的,所以数字的形式一般是:整数、小数、整数加小数;
因此,它的形状一般为:-。
根据上面正则表达式的含义,可以写出下面的表达式:' d '。 d * ';
d匹配一个或多个数字。注意不要在这里写*号,因为即使是小数,小数点前一定要有数字;.这与小数点匹配,小数点可能是也可能不是;d*这与小数点后的数字匹配,因此它等于或大于0;
代码如下:
导入重新限制='A1.45,b5,6.45,8.82 '打印re.findall(r'd 。 d * ',字符串)# ['1.45 ',' 5 ',' 6.45 ',' 8.82']与指定字符串开头的数字匹配
例如,以下字符串:
tensorflow:Final最佳有效0损失=0.20478513836860657 norm _ loss=0.767241849151384 roc=0.8262403011322021 pr=0.39401692152023315校准=0.9863 265752792358速率=0.0提取校准=0.9999。#匹配数字模式=re.compile(r '(?=校准=)d 。d* ')模式. findall(字符串)#[' 0.986326572792358 ']
匹配包含指定字符串开头的数字
pattern=re.compile(r '(?loss=)d 。d* ')模式. findall(字符串)# ['loss=0.20478513836860657 ',' loss=0.767241849151384 ']
匹配时间,17:35336024
string=' warn : sensorflow : 20181011 15:28:39 Initialize training ' pattern=re.compile(r ' D { 2 } : D { 2 } : D { 2 } '模式)。findall(string)#[' 15:28336039 ']匹配时间,20181011 15336028336039
string=' warn : sensorflow : 20181011 15:28336039 Initialize training ' pattern=re.compile(r ' D { 4 } D { 2 } D { 2 } s D { 2 } : D { 2 } : D { 2 } '模式)。find all(string)#[' 20181011 15336028:39 ']摘要
以上是边肖介绍的从字符串中提取数字的python正则表达式的详细说明。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!