python - 如何有效地从字符串中提取子字符串(带 - 或 _)
问题描述
我有一个建筑物的墙壁名称列表,如下所示:
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之前或之后读取字符串来解决这个问题会很有效。-
解决方案
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')
推荐阅读
- .net - vsts xunit vstest.console.exe 失败,返回码:1
- python - 使用 keras 的自定义数据生成器功能预处理海量数据
- ruby-on-rails - 使用地图选择几个键
- java - 如何避免许多 if-else 语句
- hbase - Cloudera Manager ZooKeeper 警告。“过时的配置。”
- swift - 已安装私有仓库,但在 Xcode 项目中为空
- android - 使用 FFmpeg Android 错误更改音频音量
- sql - 如果用户输入开始和结束日期,如何在 golang 中编写查询以获取这些日期之间的日期
- image-processing - 如何在投影透视中找到正方形第四个顶点的坐标
- python - 检查是否来自集群的点的子集