如何高效从包含_或-的字符串中提取子串获取墙体及楼层信息
实现方法
直接通过_和-两次拆分字符串即可完成提取,时间复杂度为O(n)(n为列表长度),执行效率很高,具体实现代码如下:
# 输入的原始墙体列表 wall_list = ['W1_1F-12F', 'W2_1F-9F', 'W3_10F-12F'] # 初始化三个结果列表 wall_name = [] floor_from = [] floor_to = [] for wall_str in wall_list: # 第一步:按下划线拆分,前半段为墙体名称,后半段为楼层范围 name, floor_part = wall_str.split('_') # 第二步:按横杠拆分楼层范围,得到起始、终止楼层 start_floor, end_floor = floor_part.split('-') # 写入对应结果列表 wall_name.append(name) floor_from.append(start_floor) floor_to.append(end_floor)
执行后得到的结果完全符合要求:
wall_name结果:['W1', 'W2', 'W3']floor_from结果:['1F', '1F', '10F']floor_to结果:['12F', '9F', '12F']
如果输入格式100%符合规范,也可以用更简洁的写法:
wall_name, floor_from, floor_to = map(list, zip(*(s.split('_')[0], *s.split('_')[1].split('-')) for s in wall_list))
内容的提问来源于stack exchange,提问作者Woodrow
相关产品推荐
相关产品推荐

