python regex 简单帮助 - 处理括号

标签 python regex

我有大量这种形式的数据

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/

相关文章:

python - python 中的 5 分钟循环会导致问题吗?

python - 剔除一个选定值后选取最大值

python - 如何向pandas时间列添加0

python - 使用 django、virtualenv、gunicorn 和 nginx 设置服务器以托管多个域

python - Python/Ubuntu 中的 WiFi 网络 RSSI 级别提取

javascript - 从标题创建 Slug?

sql - 如何忽略列值上的字符串的一部分

regex - 左侧的非贪婪正则表达式

regex - 量词的正则表达式组合 *?

regex - 我如何在scala中选择具有指定模式的文件名