我有大量这种形式的数据
xxx(xx.xx) - 位数不固定。喜欢
312(21.1) 378(25.5) 374(25.3) 157(10.6) 260(17.6) 1481(100)
125(28.1) 91(20.4) 94(21.1) 52(11.7) 83(18.7) 445(100)
50(28.4) 44(25) 29(16.5) 12(6.8) 41(23.3) 176(100)
注意它们都是unicode字符串。假设括号里的数字是A,括号里的数字是B。所以A(B)。
我想要做的是创建一个返回列表 [A,B] 的函数。
我知道它们可以用正则表达式来完成,但我不太擅长它们。不管怎样,我做了一些搜索并遵循了教程,所以我想出了:
re.search('\(.*?\)',s) # for B
re.search('.?\(',s) # for A
问题是,它们返回带有数字的括号。喜欢
>>s
u'312(21.1)'
>>m=re.search('\(.*?\)',s)
>>m.group()
(21.1)
如有任何帮助,我们将不胜感激...
最佳答案
使用非转义括号来定义组:
>>> [g[:2] for g in re.findall(r'([0-9]+)\(([0-9]+|[0-9]+\.[0-9]+)\)', s)]
[('312', '21.1'), ('378', '25.5'), ('374', '25.3'), ('157', '10.6'),
('260', '17.6'), ('125', '28.1'), ('91', '20.4'), ('94', '21.1'),
('52', '11.7'), ('83', '18.7'), ('50', '28.4'), ('29', '16.5'), ('12', '6.8'),
('41', '23.3'), ('176', '100')]
关于python regex 简单帮助 - 处理括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12595401/