正则表达式,捕获第一个单词和最后一个单词的第一个字母

BKS*_*BKS 0 python regex

我是正则表达式的新手,我正在试图弄清楚如何在数据框中生成一个新列,捕获名称和姓氏的第一个首字母.

例如df:

Name           NormName
john smith     j smith
s r peterson   s peterson
sandra oh      s oh
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止尝试的代码,但似乎无法让它工作.我不知道如何只更换中间部分.

namereg = re.compile('(^[a-z])(.*)(\s[a-z]*$)')
names['NormName'] = names.Name.apply(lambda tmp: namereg.sub('',tmp))
Run Code Online (Sandbox Code Playgroud)

Meg*_*Ing 5

我想你甚至不需要使用正则表达式:

names['NormName'] = names.Name.apply(lambda tmp: tmp[0]+" "+tmp.rpartition(" ")[2])
Run Code Online (Sandbox Code Playgroud)