简化代码复杂度并提升可读性:特定字符串处理代码改写需求
简化字符串处理逻辑,提升可读性
我来帮你把这段字符串处理的代码改得更简洁、易懂!先把需求再明确一遍,确保没理解错:
我们要处理三种格式的输入字符串:
Distrib ABC 1-2-xDistrib ABC DEF 1-2-xDistrib ABC DEF GHI 1-2-x
处理步骤是:
- 先砍掉开头的
Distrib前缀,把剩下的内容按空格分割成数组 - 根据分割后数组的内容类型,按规则拼接:
- 如果第0位是文本、第1位是整数 → 输出
ABC/1 - 如果第0、1位都是文本 → 输出
ABC/DEF - 如果第0、1、2位都是文本 → 输出
ABC/DEF/GHI
- 如果第0位是文本、第1位是整数 → 输出
优化后的代码(Python实现)
def process_distrib_string(input_str): # 移除前缀后按空格分割内容 parts = input_str.removeprefix("Distrib ").split() # 过滤掉末尾带连字符的版本号部分(比如"1-2-x") valid_text_parts = [part for part in parts if "-" not in part] # 按规则判断拼接逻辑 if len(valid_text_parts) >= 2 and valid_text_parts[1].isdigit(): # 规则1:第二位是整数,只拼接前两位 return f"{valid_text_parts[0]}/{valid_text_parts[1]}" elif valid_text_parts: # 规则2&3:所有有效文本部分拼接,覆盖两位或三位文本的情况 return "/".join(valid_text_parts) # 兜底:输入无效时返回空字符串 return ""
代码优化思路
- 直观的前缀处理:用Python 3.9+的
removeprefix()替代切片操作,代码语义更清晰,不用手动计算前缀长度 - 提前过滤干扰项:把末尾的版本号(比如
1-2-x)提前过滤,避免后续判断被无关内容干扰 - 扁平化判断逻辑:避免多层嵌套if,先判断规则1的特殊情况,剩下的文本类情况直接用
join统一处理,同时覆盖规则2和3,减少冗余代码 - 可读性拉满:变量名清晰直白,关键步骤加注释,新人接手也能快速理解逻辑
测试用例验证
# 测试三种典型输入 print(process_distrib_string("Distrib ABC 1-2-x")) # 输出: ABC/1 print(process_distrib_string("Distrib ABC DEF 1-2-x")) # 输出: ABC/DEF print(process_distrib_string("Distrib ABC DEF GHI 1-2-x")) # 输出: ABC/DEF/GHI
内容的提问来源于stack exchange,提问作者Qex
相关产品推荐
相关产品推荐

