如何从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