如何将A行到B行中的ID号码单独拆分提取
姓名与号码拆分实现方案
拆分逻辑
核心基于两类内容的特征差异:中文姓名由中文字符组成,号码为纯数字,常见组合格式包含姓名与号码直接拼接、或中间存在空格/特殊符号分隔。
适配场景示例
输入
张三13800138000,拆分结果:姓名张三,号码13800138000
输入13900139000李四,拆分结果:姓名李四,号码13900139000
输入王五 13700137000,拆分结果:姓名王五,号码13700137000
Python实现代码
import re def split_name_and_phone(raw_str): # 移除所有非中文、非数字的冗余字符 cleaned_str = re.sub(r'[^\u4e00-\u9fa5\d]', '', raw_str) # 提取所有中文字符作为姓名 name = ''.join(re.findall(r'[\u4e00-\u9fa5]', cleaned_str)) # 提取所有数字作为号码 phone = ''.join(re.findall(r'\d', cleaned_str)) return name, phone # 测试用例 test_cases = [ '张三13800138000', '13900139000李四', '王五 13700137000', '赵六_13600136000' ] for case in test_cases: name, phone = split_name_and_phone(case) print(f"输入:{case} | 姓名:{name} | 号码:{phone}")
扩展说明
- 上述代码适配绝大多数中文姓名+纯数字号码的拆分场景,若需拆分的号码包含特殊符号(如固定电话横杠、区号+号等),可将需要保留的字符添加至
re.sub的排除规则内即可。 - 其他编程语言实现逻辑通用:过滤冗余字符后,分别匹配提取中文、数字内容即可。
- 若输入包含生僻字、异体字,需调整中文正则匹配范围,覆盖对应字符集区间。
内容的提问来源于stack exchange,提问作者codingn00b
相关产品推荐
相关产品推荐

