提取两个字符之间的子字符串-python DataFrame

时间:2018-09-08 14:33:56

标签: python pandas

字符串定位符', \s*([^\.]*)\s*\.' =是什么意思?

我有一个与Extract sub-string between 2 special characters from one column of Pandas DataFrame相同的数据框

,并要提取位于",""."之间的子字符串。多亏了帖子的回答,一种方法如下:

In [157]: df['Title'] = df.Name.str.extract(r',\s*([^\.]*)\s*\.', expand=False)

In [158]: df
Out[158]:
                   Name   Title
0        Jim, Mr. Jones      Mr
1     Sara, Miss. Baker    Miss
2     Leila, Mrs. Jacob     Mrs
3  Ramu, Master. Kuttan  Master

尽管我认为结果是正确的,但是',\s*([^\.]*)\s*\.'是什么意思?特别是'*'和'\'是什么意思?

1 个答案:

答案 0 :(得分:1)

这意味着以下匹配项:

  • 一个,(逗号)
  • 后接\s*零个或多个空格字符(制表符,空格等)
  • 后跟([^\.])*个零个或多个不是.(点)的字符
  • 后接\s*零个或多个空格字符
  • 后跟一个\.(点)

您可以在here中找到有关正则表达式的更多信息。

更新

正如@UnbearableLightness所提到的,字符\在字符集内是多余的,以逃避.(点)。字符集是[]之间定义的任何字符。