我有以下代码:
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}')
我认为该模式会失败,因为它们仅查看内部括号,但是如果我需要在所有内容周围添加一个额外的括号,则会得到两列。有办法解决这个问题吗?
答案 0 :(得分:1)
您可以使用双括号,但使内部的一个不被捕获:
Shipping update
test.str.extract('((?:\d{2}\_){3})')
标记为非捕获组。