使用Python正则拆分E100N05为['E100','N05']应选择什么模式
正则拆分方向字母+数字组合字符串的实现方案
问题原因
你原来的写法直接把N/E/S/W作为分隔符匹配,split操作会直接删除匹配到的分隔符字符,所以才会得到丢失方向字母的结果,同时开头的E被作为分隔符切掉后会产生空字符串元素。
实现方案
方案1:使用零宽正向断言拆分
用零宽正向断言匹配方向字母的前侧位置,拆分时不会消耗方向字母字符,只需过滤掉开头的空元素即可:
import re res = [i for i in re.split(r'(?=[NESW])', 'E100N05') if i] print(res) # 输出:['E100', 'N05']
方案2:直接匹配提取目标片段(更推荐)
直接用re.findall匹配所有符合方向字母+数字规则的片段,自动过滤无效空元素,容错性更高:
import re res = re.findall(r'[NESW]\d+', 'E100N05') print(res) # 输出:['E100', 'N05']
两种方案都支持数字位数不固定的场景,不管每个方向后面跟几位数字都能正常处理。
内容的提问来源于stack exchange,提问作者Bera
相关产品推荐
相关产品推荐

