【发布时间】:2020-12-20 05:06:36
【问题描述】:
这是 Python 数据科学手册中关于字符串操作方法的 2 个示例,我无法理解。
str.extract()
monte = pd.Series(['Graham Chapman', 'John Cleese', 'Terry Gilliam',
'Eric Idle', 'Terry Jones', 'Michael Palin'])
monte.str.extract('([A-Za-z]+)')
此操作返回系列中每个元素的名字。我没有在提取函数中得到表达式输入。
str.findall()
monte.str.findall(r'^[^AEIOU].*[^aeiou]$')
如果它以辅音开头和结尾,则此操作返回原始元素,否则返回一个空列表。我认为^ 运算符代表元音的否定。 * 运算符结合了元音大小写的情况。
但是我不了解其余的运算符。
请帮助我理解这些输入表达式。提前致谢。
【问题讨论】:
-
对于#1,
[A-Za-z]代表大写或小写字母。+表示连续 1 个或多个。[A-Za-z]+一起表示 1 个或多个连续字母。()是您要返回的捕获组,默认情况下,str.extract()将返回第一个捕获组。作为如何返回姓氏的示例,您可以使用monte.str.extract('\s+([A-Za-z]+)'),其中\s+是一个或多个连续空格。请注意,它在捕获组之外,但有空格,这意味着它必须捕获姓氏,因为名字之前没有空格。
标签: python regex pandas string-operations