现在我们有形如如下字符串的数据:
联系列表:[上海浦东发展银行白金专线]主叫1次共5.48分钟,被叫0次共0.0分钟;[工商银行]主叫4次共28.36666666分钟,被叫0次共0.0分钟;[建设银行信用卡服务热线]主叫3次共9.26666666分钟,被叫0次共0.0分钟;[浦发银行信用卡热线]主叫0次共0.0分钟,被叫1次共0.58分钟
我们需要从中计算出所有银行主被叫的次数之和
为了避免python的编码问题,在避免匹配中文的情况下,我们需要从数字的特征来提取次数——次数都是整数,时长则都带有小数点。
显然,我们不能直接通过re.compile('\d+')
来匹配,这样会把小数的整数部分和小数部分也匹配进来。
那么,我们可以考虑在数字首尾排除掉小数点:re.compile('[^\.]\d+[^\.]')
。但这样的话,28.36666666
中的6666666
会被匹配到
看来,我们不仅需要排除掉小数点,还需要保证两边也都不是数字,最终:re.compile('[^\.\d](\d+)[^\.\d]')
,注意加括号的意思是为了只取数字,否则左右两边我们不需要的字符也会被匹配进来