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

2024-09-25 00:36:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使一些名称格式匹配合并以后在我的脚本。我的“Name”列是从csv导入的,包含如下名称:

安东尼奥·布朗

莱森麦考伊

勒文贝尔

对于我的剧本,我想得到名字的第一个字母,并将其与姓氏结合起来,这样。。。。你知道吗

A.棕色

L.麦考伊

L.贝尔

下面是我现在所拥有的,每次都会返回一个纳安:

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

谢谢!你知道吗


Tags: csvname脚本名称格式字母extract名字
3条回答

另一个选项使用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

这应该足够简单,即使没有regex。使用字符串拆分和串联的组合。你知道吗

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[0]替换为df.Name.str.strip().str[0]。你知道吗

警告:列必须至少有两个名称。你知道吗

如果你只是^{}一个函数,它被第一个空格分割,得到第一个单词的第一个字符,再加上剩下的字符,会怎么样

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

相关问题 更多 >