了解熊猫系列提取函数中的正则表达式

Posted

技术标签:

【中文标题】了解熊猫系列提取函数中的正则表达式【英文标题】:Understanding a regular expression in a series extract function in pandas 【发布时间】:2019-08-14 09:06:05 【问题描述】:

我有以下代码:

import pandas as pd
s = pd.Series(['toy story (1995)', 'the pirates (2014)'])
print(s.str.extract('.*\((.*)\).*',expand = True))

有输出:

     0
0  1995
1  2014

我了解 extract 函数正在为两个系列对象提取括号之间的值。但是我不明白怎么做。 '.*\((.*)\).*' 到底是什么意思?我认为星号代表通配符,但除此之外,我对这个表达式的实际情况感到非常困惑。

【问题讨论】:

【参考方案1】:

.*\( 匹配直到第一个 ( 之前的所有内容

\).* 匹配从 ) 到结尾的所有内容

(.*) 返回前两个匹配项之间的所有内容

【讨论】:

【参考方案2】:
.*             Match any number of characters
\(             Match one opening parenthesis
    (.*)       Match any number of characters into the first capturing group
\)             Match a closing parenthesis
.*             Match any number of characters

这种表示法称为正则表达式,我猜 Pandas 在extract 函数中使用了正则表达式,因此您可以获得更精确的数据。捕获组内的东西将被返回。

您可以在Wikipedia page 了解更多关于正则表达式的信息。

这是a test example 使用您的正则表达式。

【讨论】:

以上是关于了解熊猫系列提取函数中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式从 pandas 数据框中提取元素

熊猫正则表达式提取物为 re.search 提供不同的输出?

使用正则表达式提取不同格式的日期并对其进行排序 - 熊猫

如何使用选择性正则表达式在熊猫系列中执行替换?

用熊猫计算另一列中的正则表达式匹配项

R语言爬虫系列5|正则表达式与字符串处理函数