使用Python 3.5提取字符串中每个冒号后的数字
提取冒号后的数字(Python 3.5)
嘿,我懂你要的效果——只抓每个冒号:后面紧跟的数字,而不是字符串里所有零散的数字对吧?之前的方法应该是没精准锁定冒号这个前置条件,那咱们用正则表达式来搞定这个需求,Python 3.5完全支持哦。
核心思路
用正则匹配冒号+数字的模式,只捕获冒号后面的数字部分。这里分两种常见情况:
情况1:只提取整数
如果你的字符串里冒号后都是整数(比如id:123, count:45),可以用这个代码:
import re # 替换成你实际的输入字符串 your_str = "order:789, product:1024, quantity:5" # 正则规则:匹配冒号,然后捕获后面的一个或多个数字 nums_after_colon = re.findall(r':(\d+)', your_str) # 可选:把字符串转成整数类型 result = [int(num) for num in nums_after_colon] print(result) # 输出: [789, 1024, 5]
情况2:需要提取小数(比如价格、评分)
如果冒号后可能有小数(比如price:99.9, rating:4.5),调整正则规则即可:
import re your_str = "price:99.9, rating:4.5, discount:0.2" # 匹配整数或小数:\d+匹配整数部分,\.?匹配可选的小数点,\d*匹配可选的小数部分 nums_after_colon = re.findall(r':(\d+\.?\d*)', your_str) # 转成浮点数类型 result = [float(num) for num in nums_after_colon] print(result) # 输出: [99.9, 4.5, 0.2]
为什么之前的方法不对?
如果之前用了re.findall(r'\d+', your_str),那会把字符串里所有数字都抓出来,不管是不是在冒号后面。而咱们上面的正则通过:锁定了前置条件,只捕获冒号后面的数字组,就精准符合你的需求啦。
内容的提问来源于stack exchange,提问作者Yogesh Anand
相关产品推荐
相关产品推荐

