如何从Python中的字符串中提取字符?

我需要使一些名称格式匹配稍后在我的脚本中进行合并。我列“名称”是从CSV导入并包含类似名称如下:如何从Python中的字符串中提取字符?

安东尼布朗

莱西恩·麦考伊

莱夫翁·贝尔

对于我的剧本,我想获得第一个名字的第一个字母,并与姓氏结合起来这样....

A.Brown

L.McCoy

L.Bell

这里是我已经把现在返回一个烤饼每次:

ff['AbbrName'] = ff['Name'].str.extract('([A-Z]\s[a-zA-Z]+)', expand=True)

谢谢!

回答:

另一种选择使用str.replace方法与^([A-Z]).*?([a-zA-Z]+)$; ^([A-Z])捕获字符串开头的第一个字母; ([a-zA-Z]+)$最后一个字相匹配,然后由第一捕获组和第二组捕获之间加入.重建名称:

df['Name'].str.replace(r'^([A-Z]).*?([a-zA-Z]+)$', r'\1.\2') 

#0 A.Brown

#1 L.McCoy

#2 L.Bell

#Name: Name, dtype: object

回答:

如果你只想apply()将由第一空间分割,并获得第一个字加入剩下的第一个字符的功能:

import pandas as pd 

def abbreviate(row):

first_word, rest = row['Name'].split(" ", 1)

return first_word[0] + ". " + rest

df = pd.DataFrame({'Name': ['Antonio Brown', 'LeSean McCoy', "Le'Veon Bell"]})

df['AbbrName'] = df.apply(abbreviate, axis=1)

print(df)

打印:

  Name AbbrName 

0 Antonio Brown A. Brown

1 LeSean McCoy L. McCoy

2 Le'Veon Bell L. Bell

回答:

你得到烤饼,因为你的正则表达式无法比拟的名字。

相反,我会尝试以下方法:

parts = ff[name].split(' ') 

ff['AbbrName'] = parts[0][0] + '.' + parts[1]

回答:

这应该是很简单的事,即使没有正则表达式。使用字符串拆分和串联的组合。

df.Name.str[0] + '.' + df.Name.str.split().str[-1] 

0 A.Brown

1 L.McCoy

2 L.Bell

Name: Name, dtype: object

如果在Name列具有前导空格的可能性,与df.Name.str.strip().str[0]更换df.Name.str[0]

警告:列最少必须有两个名字。

以上是 如何从Python中的字符串中提取字符? 的全部内容, 来源链接: utcz.com/qa/260734.html

回到顶部