如何处理pandas中str.extract中的嵌套小括号?

问题描述 投票:0回答:1

我有以下一段代码。

df['hms'].str.extract('([0-9]{2}\_[0-9]{2}\_[0-9]{2}\_)')

列中的字符串是这样的: "12_31_31_" (实际上是一个时间戳). 上面的代码是可行的,但是我想重新定义一下模式 ([0-9]{2}\_[0-9]{2}\_[0-9]{2}\_)作为 ([0-9]{2}\_){3}. 代码将是。

display(df['event_id'].str.extract('([0-9]{2}\_){3}'))

但匹配的结果是: 21_ 或类似的东西。

示例代码。

test = pd.Series(['12_41_15_asds', '41_14_11_adfsag'])
test.str.extract('([0-9]{2}\_){3}')

我认为这个模式失败了,因为他们只看内部的小括号,但是如果我需要在所有的东西周围添加一个额外的小括号,我将得到两列。有什么方法可以解决这个问题吗?

pandas numpy python-3.7
1个回答
1
投票

你可以使用双括号,但是把里面的括号变成非捕获的。

test.str.extract('((?:\d{2}\_){3})')

其中 (?: ... ) 标志着一个非抓捕组。

© www.soinside.com 2019 - 2024. All rights reserved.