Python 对中文名称逐字按字母表进行排序并输出

使用场景

代码适用于需要对中文名称进行排序并规范化输出的情景,具体为处理一个包含中文姓名的文本文件,按姓名的拼音首字母进行排序,并以规范的格式输出。

排序规则:
将名称按照姓氏首字母A-Z的次序,进行排序;
若同姓氏,则比较下一名称在A-Z中的次序再重新排列。


操作步骤

  1. 准备输入: 将包含中文姓名的文本文件(例如 names.txt)放在指定的文件路径下。

  2. 替换文件路径: 在代码中,将 file_path 变量替换为实际的文件路径,确保代码能够正确读取文件。

  3. 运行代码: 运行代码,它将读取文件中的中文姓名列表,按照拼音首字母进行排序,然后输出排序后的中文姓名。


实现思路

  • 拼音获取: 使用 pypinyin 库获取每个中文名称的拼音,并保存为元组列表,其中元组包含原名称和拼音。

  • 排序规则: 利用 Python 的 sorted 函数,通过 lambda 函数对拼音进行排序,同时考虑下一个字的拼音,以确保正确的中文排序。

  • 下一个字拼音获取: 使用 get_next_pinyin 函数获取每个姓名中下一个字的拼音首字母。

  • 格式化输出: 使用 format_list 函数将排序后的中文姓名列表格式化为一个以 分隔的字符串。


代码实现

# -*- coding: utf-8 -*-
from pypinyin import pinyin, Styledef sort_chinese_names(names):# 获取每个名称的拼音pinyin_names = [(name, ''.join([p[0] for p in pinyin(name, style=Style.NORMAL)])) for name in names]# 根据拼音进行排序,同时考虑下一个字的拼音sorted_names = sorted(pinyin_names, key=lambda x: (x[1], get_next_pinyin(x[0])))# 返回排序后的名称列表return [name[0] for name in sorted_names]def get_next_pinyin(name):if len(name) > 1:next_pinyin = pinyin(name[1], style=Style.NORMAL)[0][0]return next_pinyinelse:return ''def format_list(input_list):formatted_str = '、'.join(map(str, input_list))return formatted_strif __name__ == "__main__":# 输入中文名称列表txt文件file_path = './names.txt'  # 替换为实际的文件路径# 读取文件内容并去除回车符with open(file_path, 'r', encoding='utf-8') as file:content_list = [line.strip() for line in file]input_names = content_list# 排序中文名称sorted_names = sort_chinese_names(input_names)# 输出排序并规范化的中文名称result = format_list(sorted_names)print(result)

计算机术语和函数解释表格

术语/函数解释
pypinyin用于将中文转换为拼音的 Python 库
lambda()匿名函数,用于排序中文姓名
get_next_pinyin获取中文姓名中下一个字的拼音首字母
format_list()将列表格式化为以 ‘、’ 分隔的字符串

如果这对您有所帮助,希望点赞支持一下作者! 😊

点击查看原文

file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-164. 最大间距【数组 桶排序 基数排序 排序】

LeetCode-164. 最大间距【数组 桶排序 基数排序 排序】 题目描述:解题思路一:桶排序,这种方法比较简单,记住3个公式即可。如下:解题思路二:基数排序,其实和桶排序差不多,就是直接分为…

孩子都能学会的FPGA:第二十二课——用FPGA实现计数时钟的奇数次分频

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿…

使用SQL中的LIKE操作符进行模糊匹配:原理与用法

LIKE操作符的基本原理: LIKE操作符用于在SELECT语句中进行模糊匹配,通常与通配符%一起使用。%表示匹配任意长度的任意字符,例如%apple%可以匹配包含apple字符串的任意位置的字符串。而其他的通配符如下: _ 表示匹配一个任意字符[…

内核定时器

一、时钟中断 硬件有一个时钟装置,该装置每隔一定时间发出一个时钟中断(称为一次时钟嘀嗒-tick),对应的中断处理程序就将全局变量jiffies_64加1 jiffies_64 是一个全局64位整型, jiffies全局变量为其低32位的全局变量&#xff0…

用pip更新、安装python的包

查看pip的版本:python -m pip --version 例如,查看下pip的版本,在cmd下输入命令python -m pip --version,可以发现当前安装的pip的版本是23.2.1: 查看一个包的详情:python -m pip show 例如&#xff0c…

Python 调用企业微信群机器人发送消息及文件

Python 操作企业微信群机器人。 企业微信群创建机器人 : 安装 requests json : pip install requests pip install json发送消息(markdown) import requests import json# 企业微信机器人发送文字 def send_markdown (message, …

【信息安全】-个人敏感信息、个人信息、个人金融信息

文章目录 个人敏感信息个人敏感信息判定举例 个人信息个人信息判定举例 个人金融信息内容a) 账户信息指账户及账户相关信息b) 鉴别信息c) 金融交易信息d) 个人身份信息e) 财产信息f) 借贷信息g) 其他信息: 出处 个人敏感信息 个人敏感信息判定 个人敏感信息是指一旦泄露、非法…

xxl-job简单实用

仅仅为了记录一下xxl-job的使用,针对新手而言! 1.开始准备 源码仓库地址Release Downloadhttps://github.com/xuxueli/xxl-jobDownloadhttp://gitee.com/xuxueli0323/xxl-jobDownload

cmd下查看python命令的用法

在cmd下,可以运行python --help或者py --help来查看python命令的用法。例如:

C++11改进观察者模式

观察者模式定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 先看一个简单的观察者模式是如何实现的&#xff1a; #include <iostream> #include <vector> #include <map> …

《计算机算法设计与分析(第5版)》笔记

文章目录 [toc]第一章&#xff1a;算法概述1.1|算法与程序算法性质 程序 1.2|算法复杂性分析算法复杂性时间复杂性最坏情况下的时间复杂性最好情况下的时间复杂性平均情况下的时间复杂性 渐进复杂性 O O O表示法、 Ω \Omega Ω表示法、 θ \theta θ表示法、 o o o表示法 O O …

一起学docker系列之十七Docker Compose 与手动操作的比较与优势分析

目录 1 前言2 不使用 Docker Compose2.1 启动 MySQL 容器2.2 启动 Redis 容器2.3 启动微服务容器 3 使用 Docker Compose4 使用 Docker Compose 的优势5 结语参考地址 1 前言 在当今容器化应用的开发与部署中&#xff0c;容器编排工具的选择对于简化流程、提高效率至关重要。本…

24、pytest通过xfail将测试函数标记为预期失败

官方实例 # content of test_xfail.py import pytest import syspytest.mark.xfail def test_function():print("test_function was invoked.")def valid_config():return Falsedef test_function_02():if not valid_config():pytest.xfail("failing configura…

集体建筑业总产值数据,shp/excel格式,1990-2021年,可直接下载

建筑业总产值指以货币表现的建筑业企业在一定时期内生产的建筑业产品和服务的总和。建筑业总产值包括建筑工程产值、安装工程产值和其他产值三部分内容&#xff0c;不包括境外产值。 建筑业总产值是指以货币表现的建筑业企业在一定时期内生产的建筑业产品和服务的总和。 建筑…

代数学笔记8: Sylow定理

Sylow定理 ∣ G ∣ p r ⋅ m |G|p^r\cdot m ∣G∣pr⋅m, ( m , p ) 1 (m,p)1 (m,p)1, 则 G G G中必有 p r p^r pr阶子群. 证明: 应用 例子: 15阶群必定是循环群. 因为 15 3 5 153\times 5 1535, 所以15阶群有 3 3 3阶群或 5 5 5阶群, 设3阶群有 n 3 n_3 n3​个, 5阶群有…

金蝶EAS从哪里查看 即使库存的金额?

【财务会计】——【存货核算】——【报表分析】——【存货收发存汇总表】 从这里能看到即使库存的金额

机器人制作开源方案 | 自主型收集餐盘机器人

作者&#xff1a;蔡佳怡、朱启会、郭晨杰、杨昊天、焦家辉 单位&#xff1a;西安外事学院 指导老师&#xff1a;杜喜昭、张燕 1. 产品说明 1.1 设计目的 对于如学校、工厂这种大型食堂&#xff0c;一般的收餐盘模式为用餐人用餐完毕后&#xff0c;把餐盘拿到最近的收餐盘点&…

【算法】对二分搜索的理解

二分搜索大家都很熟悉&#xff0c;首先我们先来看看基本框架 func binarySearch(nums []int, target int) int {left, right : 0, ...for ... {mid : left (right-left)/2if nums[mid] target {...} else if nums[mid] < target {left ...} else if nums[mid] > targ…

圈子社交系统:打破时间与空间的限制。APP小程序H5三端源码交付,支持二开!

在现代社会&#xff0c;社交已成为人们生活中不可或缺的一部分。然而&#xff0c;传统的社交方式往往受制于时间和空间的限制&#xff0c;使得人们难以充分发挥社交的潜力。为了解决这一问题&#xff0c;圈子社交系统应运而生。 圈子社交系统通过技术手段打破时间与空间的限制&…

Linux环境搭建SVN服务器并结合内网穿透实现远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. Ubuntu安装SVN服务二. 修改配置文件2.1 修改svnserve.conf文件2.2 修改pass…