如何从含字母数字的字符串中提取并修改数字?
字符串数字提取与格式转换实现
核心需求
给定混合字母和数字的字符串,完成两个操作:
- 提取所有连续的数字序列并转为整数
- 若提取的数字末尾带有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
相关产品推荐
相关产品推荐

