首页 > 解决方案 > 如何有效地从字符串中提取子字符串(带 - 或 _)

问题描述

我有一个建筑物的墙壁名称列表,如下所示:

wall_list = ['W1_1F-12F', 'W2_1F-9F', 'W3_10F-12F']

我想将它们分成三个或提取每个元素(如 W1、1F、12F),以便我可以在另一个进程中使用墙壁名称或楼层信息。

wall_name = [W1, W2, W3...]
Floor_from = [1F, 1F, 10F...]
Floor_to = [12F, 9F, 12F...]

这就是我最终想要得到的结果。

如果存在这种方法,我认为通过在_and之前或之后读取字符串来解决这个问题会很有效。-

标签: python

解决方案


您可以通过简单的模式使用该函数的正则表达式版本:split

import re

wall_list = ['W1_1F-12F', 'W2_1F-9F', 'W3_10F-12F']

for s in wall_list:
    print(re.split('[_-]', s))

这将给出:

['W1', '1F', '12F']
['W2', '1F', '9F']
['W3', '10F', '12F']

并将它们分成元素只需将结果放入zip

import re

wall_list = ['W1_1F-12F', 'W2_1F-9F', 'W3_10F-12F']

wall, floor_from, floor_to = zip(*(re.split('[_-]', s) for s in wall_list))
print(wall, floor_from, floor_to, sep='\n')

现在将给出:

('W1', 'W2', 'W3')
('1F', '1F', '10F')
('12F', '9F', '12F')

推荐阅读