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

如何从含字母数字的字符串中提取并修改数字?

字符串数字提取与格式转换实现

核心需求

给定混合字母和数字的字符串,完成两个操作:

  1. 提取所有连续的数字序列并转为整数
  2. 若提取的数字末尾带有3个零,将其转换为仅保留1个零(注:根据示例反推,输入示例可能存在笔误,正确输入应为ab10000cd25000ef30才能得到输出[10,25,30],以下按需求描述和示例分别给出实现)

实现方案(按需求描述)

如果严格遵循“末尾3个零转仅保留1个零”的规则,代码如下:

import re

def process_target_string(input_str):
    # 提取所有数字序列并转为整数
    extracted_nums = list(map(int, re.findall(r'\d+', input_str)))
    processed_result = []
    for num in extracted_nums:
        # 判断是否末尾有3个零(能被1000整除)
        if num % 1000 == 0:
            # 保留1个零:除以100,例如1000→10,25000→250
            processed_num = num // 100
            processed_result.append(processed_num)
        else:
            processed_result.append(num)
    return processed_result

# 测试示例输入(按描述规则输出为[10,250,30])
test_input = "ab1000cd25000ef30"
print(process_target_string(test_input))

实现方案(匹配示例输出)

如果需要得到示例中的[10,25,30],则输入应为ab10000cd25000ef30,代码逻辑调整为末尾3个零时除以1000:

import re

def process_target_string(input_str):
    extracted_nums = list(map(int, re.findall(r'\d+', input_str)))
    processed_result = []
    for num in extracted_nums:
        if num % 1000 == 0:
            # 除以1000,例如10000→10,25000→25
            processed_num = num // 1000
            processed_result.append(processed_num)
        else:
            processed_result.append(num)
    return processed_result

# 测试修正后的输入(输出为[10,25,30])
test_input = "ab10000cd25000ef30"
print(process_target_string(test_input))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 14:54:50