如何在Python中不使用正则表达式提取以800开头的付费电话号码
提取以800开头的电话号码(非正则实现)
要实现不使用正则表达式提取目标号码,可以通过字符串分割和条件判断完成,具体代码如下:
sentence = "The toll-no is 800-123-2345 and 900-234-2345" parts = sentence.split() target_numbers = [] for part in parts: # 筛选以800开头、仅含数字和连字符的候选内容 if part.startswith("800-") and all(c.isdigit() or c == '-' for c in part): # 验证格式为xxx-xxx-xxxx(长度12,包含2个连字符) if len(part) == 12 and part.count('-') == 2: target_numbers.append(part) # 输出结果,若有多个匹配项会全部收集,这里取第一个示例结果 print(target_numbers[0] if target_numbers else "未找到匹配号码")
代码逻辑说明:
- 用
split()将原字符串按空格拆分为独立元素,把电话号码与其他文本分离 - 遍历每个元素,先通过
startswith("800-")锁定目标号码的开头特征 - 用
all()验证元素仅包含数字和连字符,排除无关内容 - 最后检查长度和连字符数量,确保符合
xxx-xxx-xxxx的标准电话号码格式 - 收集所有符合条件的号码,支持提取多个匹配项
测试示例输入时,会输出预期结果:800-123-2345。
内容的提问来源于stack exchange,提问作者Pavan9012
相关产品推荐
相关产品推荐

