Python中文
首页
教程
问答
标签
搜索
登录
注册
python使用具有不同模式匹配数的regex对字符串列表进行排序
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>刚开始使用python,很难按多个/不同数量的匹配项对字符串列表排序。基本上,给定一个字符串列表,我需要按给定的正则表达式(用户提供)拆分每个字符串,然后按给定的键列表(位置)进行排序。键可以是单个整数,也可以是按排序顺序排列的列表。例如:</p> <p>正则表达式=r'.<em>(FF | TT | SS)([-.\d]+v)([-.\d]+c)(FF | TT | SS)。</em>'</p> <p>键=[2,1,3]</p> <p>将按location2、location1、location3对字符串列表进行排序。在</p> <p>我有一个适用于固定数量的位置/关键点的以下方法,但不知道如何使其在不同数量的“关键点”下工作:</p> <pre><code>import re strlist = ["synopsys_SS_2v_-40c_SS.lib","synopsys_SS_1v_-40c_SS.lib","synopsys_SS_2v_-40c_TT.lib","synopsys_FF_3v_-40c_FF.lib", "synopsys_TT_4v_125c_TT.lib", "synopsys_TT_1v_-40c_TT.lib"] regex = r'.*(FF|TT|SS)_([-\.\d]+v)_([-\.\d]+c)_(FF|TT|SS).*' key = [2,1,3] sfids_single = sorted(strlist, key=lambda name: ( re.findall(regex,name)[0][key[0]], re.findall(regex,name)[0][key[1]], re.findall(regex,name)[0][key[2]])) </code></pre> <p>尝试了以下方法,但似乎不起作用:</p> ^{pr2}$ <p>也尝试过(没有成功):</p> <pre><code>for i in key: strlist.sort(key=lambda name: re.findall(regex,name)[0][key[i]]) </code></pre> <p>预期结果:</p> <pre><code>['synopsys_SS_1v_-40c_SS.lib', 'synopsys_TT_1v_-40c_TT.lib', 'synopsys_SS_2v_-40c_SS.lib', 'synopsys_SS_2v_-40c_TT.lib', 'synopsys_FF_3v_-40c_FF.lib', 'synopsys_TT_4v_125c_TT.lib'] </code></pre> <p>我是不是完全走错了路?非常感谢任何指导。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>非常感谢@a_guest提供了拼图中缺失的部分。解决方法如下:</p> <pre><code>fids_single = sorted(strlist, key=lambda name: tuple(re.findall(regex,name)[0][i] for i in key)) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
区分轴上的像素大小
2 回答
区分过度拟合与良好预测
7 回答
区分通过POST接收的数据并在Cherrypy中获取
2 回答
区分重写和重载
6 回答
区分金贾二号的类型
4 回答
区别:IF IN和IF==python
9 回答
区别:list.append()与incrementequal?
2 回答
区别:创建在启动wx应用程序时不“阻止”控制台的脚本
2 回答
区别于python中的命令行和CGI
4 回答
区别关系
10 回答
区别是什么APIClient.enforce\ csrf\检查以及APIClient.handler.enforce\ csrf\ u检查
7 回答
区块.draw()未在python空闲模式下工作
6 回答
区块链API调用输出对象名称而不是内容
2 回答
区块链nonce值随负载变化
2 回答
区块链Python语法错误(Snakecoin)
10 回答
区块链不连接到服务器和矿工
3 回答
区块链信息钱包支票支付员
5 回答
区块链和区块链密码错误
10 回答
区块链尝试向Transaction字典添加键/值以创建区块链
9 回答
区域:IOError:[Errno 22]无效模式('w')或filenam
2 回答