You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何提取数值前两位数字?含版本号提取需求

问题一:如何在Python中提取数值的前两位数字?

这是个挺常见的需求,分几种场景给你整理了实用的解决方案:

  • 转字符串处理(最直观,适配整数/浮点数/负数)
    把数值转成字符串后截取前两位,注意先处理负数的负号避免干扰:

    def get_first_two_digits(num):
        num_str = str(abs(num))  # 取绝对值去掉负号
        if len(num_str) >= 2:
            return int(num_str[:2])
        return num  # 数值不足两位时返回原数,你也可以根据需求改成返回0或者其他值
    
    # 测试示例
    print(get_first_two_digits(1234))  # 输出 12
    print(get_first_two_digits(56.78)) # 输出 56
    print(get_first_two_digits(-987))  # 输出 98
    print(get_first_two_digits(7))     # 输出 7
    
  • 数学计算法(适合整数,无需转字符串)
    通过不断整除10,把数值缩小到两位数范围:

    def get_first_two_digits_math(num):
        num = abs(num)
        while num >= 100:
            num = num // 10
        return num
    
    # 测试示例
    print(get_first_two_digits_math(456))  # 输出 45
    print(get_first_two_digits_math(78))   # 输出 78
    print(get_first_two_digits_math(-123)) # 输出 12
    
问题二:提取主版本号和次版本号(如从1.1.73.4得到1.1)

看了你现有的代码,已经完成了核心的版本号匹配工作,只需要对结果做一步处理就能拿到主+次版本号,给你几个简洁的实现方法:

方法一:分割字符串取前两段

利用版本号的点分隔特性,把完整版本号拆分成列表后取前两个元素再拼接:

import re
import json

for version in issue["fields"]["fixVersions"]:
    # 这里可以简化:不用先dumps再loads,version本身就是字典
    jsonToPython = version
    if jsonToPython['name'][:8] == "Ciagana ":
        matches = re.findall(r"\d+\.\d+\.\d+\.\d+", jsonToPython['name'])
        if matches:  # 加个判断防止没匹配到版本号时报错
            full_version = matches[0]
            main_sub_version = '.'.join(full_version.split('.')[:2])
            print(main_sub_version)  # 输出 1.1 这样的结果

方法二:修改正则直接匹配目标

可以直接写正则表达式只捕获主版本和次版本,省去后续分割步骤:

import re
import json

for version in issue["fields"]["fixVersions"]:
    jsonToPython = version
    if jsonToPython['name'][:8] == "Ciagana ":
        # 正则捕获前两段数字,后面跟着两段数字的结构
        match_result = re.search(r"(\d+\.\d+)\.\d+\.\d+", jsonToPython['name'])
        if match_result:
            print(match_result.group(1))  # 直接得到 1.1

小优化建议

  • 你的代码里json.dumps(version)再json.loads(cacheData)完全是多余的,version本身就是从issue["fields"]["fixVersions"]里取的字典,直接赋值给jsonToPython就行,能让代码更简洁高效。
  • 一定要加上匹配结果的判断(if matches:或if match_result:),避免遇到没有版本号的情况时抛出IndexError或者AttributeError,让代码更健壮。

内容的提问来源于stack exchange,提问作者unknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:40:44