最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+pypinyin實(shí)現(xiàn)將中文姓名拼音轉(zhuǎn)換與搜索

 更新時(shí)間:2026年01月06日 08:55:26   作者:weixin_46244623  
這篇文章主要為大家詳細(xì)介紹了如何基于 pypinyin 和pandas實(shí)現(xiàn)一個(gè)優(yōu)雅且實(shí)用的中文姓名拼音轉(zhuǎn)換與搜索方案,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下

Python 使用 pypinyin 將中文姓名轉(zhuǎn)換為拼音并支持拼音搜索

在實(shí)際業(yè)務(wù)中,我們經(jīng)常會(huì)遇到這樣的需求:

  • 將中文姓名轉(zhuǎn)換為拼音
  • 支持通過(guò)拼音或拼音首字母搜索中文姓名
  • 結(jié)合 Pandas 對(duì)數(shù)據(jù)進(jìn)行批量處理

本文將基于 pypinyin + pandas,實(shí)現(xiàn)一個(gè)優(yōu)雅且實(shí)用的中文姓名拼音轉(zhuǎn)換與搜索方案。

一、環(huán)境準(zhǔn)備

安裝依賴

pip install pandas pypinyin

導(dǎo)入必要的庫(kù)

import pandas as pd
from pypinyin import pinyin, Style

二、示例數(shù)據(jù)準(zhǔn)備

假設(shè)我們有一列中文姓名數(shù)據(jù):

data = {
    'name': ['張三', '李四', '王小五', '趙六']
}

df = pd.DataFrame(data)

當(dāng)前 DataFrame 結(jié)構(gòu)如下:

name
張三
李四
王小五
趙六

三、實(shí)現(xiàn)姓名拼音轉(zhuǎn)換函數(shù)

我們希望實(shí)現(xiàn)兩個(gè)拼音字段:

  • full_pinyin:姓名全拼(如 zhangsan
  • initials:姓全拼 + 名首字母(如 zhangs

核心函數(shù)實(shí)現(xiàn)

def get_full_pinyin_and_initials(name):
    """
    將中文姓名轉(zhuǎn)換為:
    1. 全拼
    2. 姓全拼 + 名首字母
    """

    # 全拼(張三 -> zhangsan)
    full_pinyin = ''.join(
        pinyin(name, style=Style.NORMAL)[i][0]
        for i in range(len(name))
    )

    # 姓的全拼
    surname_pinyin = pinyin(name[0], style=Style.NORMAL)[0][0]

    # 名的首字母
    name_initials = pinyin(name[1:], style=Style.FIRST_LETTER)

    initials = surname_pinyin + ''.join(i[0] for i in name_initials)

    return full_pinyin, initials

四、批量生成拼音字段

使用 apply + pd.Series,將返回的元組拆分成多個(gè)列:

df[['full_pinyin', 'initials']] = (
    df['name']
    .apply(get_full_pinyin_and_initials)
    .apply(pd.Series)
)

處理后的 DataFrame:

namefull_pinyininitials
張三zhangsanzhangs
李四lisilis
王小五wangxiaowuwangxw
趙六zhaoliuzhaol

五、實(shí)現(xiàn)拼音搜索功能

支持以下兩種搜索方式:

  • 全拼搜索
  • 拼音首字母搜索

搜索函數(shù)實(shí)現(xiàn)

def find_name_by_pinyin(input_pinyin):
    """
    根據(jù)拼音或拼音首字母查找姓名
    """

    matched_names = df[
        df['initials'].str.contains(input_pinyin, na=False) |
        df['full_pinyin'].str.contains(input_pinyin, na=False)
    ]

    return matched_names

六、使用示例

input_pinyin = "zhangs"
result = find_name_by_pinyin(input_pinyin)

print(result)

輸出結(jié)果:

  name full_pinyin initials
0  張三    zhangsan   zhangs

七、完整代碼

import pandas as pd
from pypinyin import pinyin, Style


# 假設(shè)你的 DataFrame 是這樣的
data = {
    'name': ['張三', '李四', '王小五', '趙六']
}
df = pd.DataFrame(data)


# 定義獲取拼音的函數(shù)
def get_full_pinyin_and_initials(name):
    # 獲取全拼
    full_pinyin = ''.join(pinyin(name, style=Style.NORMAL)[i][0] for i in range(len(name)))

    # 獲取姓的拼音和名的首字母
    surname_pinyin = pinyin(name[0], style=Style.NORMAL)[0][0]  # 姓的全拼
    name_initial = pinyin(name[1:], style=Style.FIRST_LETTER)  # 名的首字母
    initials = surname_pinyin + ''.join(n[0] for n in name_initial)

    return full_pinyin, initials


# 應(yīng)用函數(shù)并創(chuàng)建新的列
df[['full_pinyin', 'initials']] = df['name'].apply(get_full_pinyin_and_initials).apply(pd.Series)


# 定義查找姓名的函數(shù)
def find_name_by_pinyin(input_pinyin):
    # 查找與輸入拼音匹配的姓名
    matched_names = df[df['initials'].str.contains(input_pinyin, na=False) | 
                        df['full_pinyin'].str.contains(input_pinyin, na=False)]
    return matched_names


# 示例:查找拼音
input_pinyin = "zhangs"  # 你想要查找的拼音
result = find_name_by_pinyin(input_pinyin)


# 打印結(jié)果
print(result)

以上就是Python+pypinyin實(shí)現(xiàn)將中文姓名拼音轉(zhuǎn)換與搜索的詳細(xì)內(nèi)容,更多關(guān)于Python pypinyin拼音轉(zhuǎn)換與搜的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 用python實(shí)現(xiàn)批量重命名文件的代碼

    用python實(shí)現(xiàn)批量重命名文件的代碼

    任務(wù)很簡(jiǎn)單,某個(gè)目錄下面有幾千個(gè)文件,某些文件沒有后綴名,現(xiàn)在的任務(wù)就是將所有的沒有后綴名的文件加上后綴名,python有現(xiàn)成的函數(shù)可以實(shí)現(xiàn),但是在實(shí)現(xiàn)過(guò)程中遇到幾個(gè)問(wèn)題,分享一下解決方法
    2012-05-05
  • 利用Python求陰影部分的面積實(shí)例代碼

    利用Python求陰影部分的面積實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于利用Python求陰影部分面積的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • python批量讀取txt文件為DataFrame的方法

    python批量讀取txt文件為DataFrame的方法

    下面小編就為大家分享一篇python批量讀取txt文件為DataFrame的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 淺談DataFrame和SparkSql取值誤區(qū)

    淺談DataFrame和SparkSql取值誤區(qū)

    今天小編就為大家分享一篇淺談DataFrame和SparkSql取值誤區(qū),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python生成8位隨機(jī)字符串的方法分析

    Python生成8位隨機(jī)字符串的方法分析

    這篇文章主要介紹了Python生成8位隨機(jī)字符串的方法,結(jié)合實(shí)例形式對(duì)比分析了2種比較常用的隨機(jī)字符串生成技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • python裝飾器decorator介紹

    python裝飾器decorator介紹

    這篇文章主要介紹了python裝飾器decorator介紹,decorator設(shè)計(jì)模式允許動(dòng)態(tài)地對(duì)現(xiàn)有的對(duì)象或函數(shù)包裝以至于修改現(xiàn)有的職責(zé)和行為,簡(jiǎn)單地講用來(lái)動(dòng)態(tài)地?cái)U(kuò)展現(xiàn)有的功能,需要的朋友可以參考下
    2014-11-11
  • Python環(huán)境搭建之OpenCV的步驟方法

    Python環(huán)境搭建之OpenCV的步驟方法

    本篇文章主要介紹了Python環(huán)境搭建之OpenCV的步驟方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 詳解Ubuntu環(huán)境下部署Django+uwsgi+nginx總結(jié)

    詳解Ubuntu環(huán)境下部署Django+uwsgi+nginx總結(jié)

    這篇文章主要介紹了Ubuntu環(huán)境下部署Django+uwsgi+nginx總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 詳解Python中的函數(shù)參數(shù)傳遞方法*args與**kwargs

    詳解Python中的函數(shù)參數(shù)傳遞方法*args與**kwargs

    本文將討論P(yáng)ython的函數(shù)參數(shù)。我們將了解args和kwargs,/和的都是什么,雖然這個(gè)問(wèn)題是一個(gè)基本的python問(wèn)題,但是在我們寫代碼時(shí)會(huì)經(jīng)常遇到,比如timm中就大量使用了這樣的參數(shù)傳遞方式
    2023-03-03
  • python logging添加filter教程

    python logging添加filter教程

    今天小編就為大家分享一篇python logging添加filter教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

辉南县| 丘北县| 正阳县| 东方市| 于田县| 聊城市| 迁西县| 罗江县| 淳安县| 新宁县| 台北县| 左权县| 台江县| 肇源县| 阿坝县| 长治县| 泰兴市| 龙门县| 安陆市| 含山县| 杨浦区| 乌拉特前旗| 山东| 崇明县| 缙云县| 漳州市| 兰溪市| 江华| 绵竹市| 乐安县| 伊宁县| 阿坝县| 龙岩市| 尼勒克县| 阿拉善左旗| 双牌县| 滨州市| 武平县| 禄丰县| 北票市| 陆川县|