python名字排序_python 中文排序(按拼音)

pypinyin

1 排序 仅按拼音首字母 排序

安装pypinyin

pip3 install pypinyin

代码

from pypinyin import lazy_pinyin

chars = ['鑫','鹭','榕','柘','珈','骅','孚','迦','瀚','濮','浔','沱','泸','恺','怡','岷','萃','兖']

chars.sort(key=lambda char: lazy_pinyin(char)[0][0])

print([lazy_pinyin(char) for char in chars])

print(chars)

结果

[['cui'], ['fu'], ['hua'], ['han'], ['jia'], ['jia'], ['kai'], ['lu'], ['lu'], ['min'], ['pu'], ['rong'], ['tuo'], ['xin'], ['xun'], ['yi'], ['yan'], ['zhe']]

['萃', '孚', '骅', '瀚', '珈', '迦', '恺', '鹭', '泸', '岷', '濮', '榕', '沱', '鑫', '浔', '怡', '兖', '柘']

按所有拼音排序

#!/usr/bin/python3

# -*- coding: UTF-8 -*-

# from __future__ import unicode_literals

from pypinyin import lazy_pinyin

def sort_pinyin(hanzi_list):

hanzi_list_pinyin=[]

hanzi_list_pinyin_alias_dict={}

for single_str in hanzi_list:

py_r = lazy_pinyin(single_str)

# print("整理下")

single_str_py=''

for py_list in py_r:

single_str_py=single_str_py+py_list

hanzi_list_pinyin.append(single_str_py)

hanzi_list_pinyin_alias_dict[single_str_py]=single_str

hanzi_list_pinyin.sort()

sorted_hanzi_list=[]

for single_str_py in hanzi_list_pinyin:

sorted_hanzi_list.append(hanzi_list_pinyin_alias_dict[single_str_py])

return sorted_hanzi_list

str=['床前', '明月', '光','疑是','地上霜','举头','望','明月','低头','思','故乡']

print(str)

str=sort_pinyin(str)

print(str)

['床前', '明月', '光', '疑是', '地上霜', '举头', '望', '明月', '低头', '思', '故乡']

['床前', '地上霜', '低头', '光', '故乡', '举头', '明月', '明月', '思', '望', '疑是']

使用pypinyin必须传入unicode字符串

例子1

#!/usr/bin/python

# -*- coding: UTF-8 -*-

from pypinyin import pinyin, lazy_pinyin

py_r = pinyin(u"学python,我在行")

print py_r

print("整理下")

for py in py_r:

for p in py:

print p,"",

#发现上面的"行"字是多音字,本应念"han"

print("\n启动多音字")

py_r = pinyin(u"学python,我在行", heteronym=True)

print py_r

for py in py_r:

for p in py:

print p,"",

(venv) allenwoo@~/renren$ python test.py

[[u'xu\xe9'], [u'python,'], [u'w\u01d2'], [u'z\xe0i'], [u'x\xedng']]

整理下

xué python, wǒ zài xíng

启动多音字

[[u'xu\xe9'], [u'python,'], [u'w\u01d2'], [u'z\xe0i'], [u'x\xedng', u'h\xe1ng', u'x\xecng', u'h\xe0ng', u'h\xe9ng']]

xué python, wǒ zài xíng háng xìng hàng héng

例子2:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

from pypinyin import pinyin, lazy_pinyin

# 不需要声调

py_r = lazy_pinyin(u"没有了诗和远方")

print py_r

# 特殊字符

# 默认

py_r = lazy_pinyin(u"满天都是小☆☆")

print py_r

# 不理睬,忽略

py_r = lazy_pinyin(u"满天都是小☆☆", errors=u'ignore')

print py_r

# 替换

py_r = lazy_pinyin(u"满天都是小☆☆", errors=u'replace')

# 也可以使用回调函数处理

py_r = lazy_pinyin(u"满天都是小☆☆", errors=lambda x: 'star')

print py_r

(venv) allenwoo@~/renren$ python test.py

[u'mei', u'you', u'le', u'shi', u'he', u'yuan', u'fang']

[u'man', u'tian', u'dou', u'shi', u'xiao', u'\u2606\u2606']

[u'man', u'tian', u'dou', u'shi', u'xiao']

[u'man', u'tian', u'dou', u'shi', u'xiao', 'star']

在第1个例子中,我们发现这个模块会简单分词,将"python"分为一个词

而且其他的中文词语并没有按词分开后再转拼音

自定义库:####

** 使用load_phrases_dict,自定义拼音库**

#!/usr/bin/python

# -*- coding: UTF-8 -*-

from pypinyin import lazy_pinyin, load_phrases_dict, TONE2

print lazy_pinyin(u"诗和远方", style=TONE2)

load_phrases_dict({u'远方':[['ju4'], ['keng1']]})

print lazy_pinyin(u"诗和远方", style=TONE2)

(venv) allenwoo@~/renren$ python test.py

[u'shi1', u'he2', u'yua3n', u'fa1ng']

[u'shi1', u'he2', 'ju4', 'keng1']

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

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

相关文章

struts2中非表单标签的使用 componen

2. component标签 component标签用于使用自己的自定义组件,这是一个非常灵活的用法,如果经常需要使用某个效果片段,就可以考虑将这个效果片段定义成一个自定义组件,然后在页面中使用component标签来使用该自定义组件。因为使…

oracle 11g r2 rac中节点时间不同步,Oracle11gR2安装RAC错误之--时钟不同步

系统环境: 操作系统:RedHat EL5 Cluster: Oracle GI(Grid Infrastructure) Oracle: Oracle 11.2.0.1.0 如图所示:RAC 系统架系统环境:操作系统:RedHat EL5Cluster: Oracle GI(Grid I…

vue中pdf预览组件_Vue+ElementUI使用vue-pdf实现预览功能

Vue ElementUI项目中使用vue-pdf实现简单预览,供大家参考,具体内容如下1、安装 vue-pdfnpm install --save vue-pdf2、在vue页面中导入对应的组件我这是通过点击 预览 按钮 获取id打开一个dialog来实现:visible.sync"viewVisible" width"…

酒店预定系统

系统功能模块功能图 用例图 E-R图 转载于:https://www.cnblogs.com/qlly-20/p/9052461.html

leetcode 145. Binary Tree Postorder Traversal

传送门 145. Binary Tree Postorder Traversal QuestionEditorial SolutionMy SubmissionsTotal Accepted: 106482Total Submissions: 291244Difficulty: HardGiven a binary tree, return the postorder traversal of its nodes values. For example:Given binary tree {1,#…

74-A/D指标,Accumulation/Distribution,积累/派发线,离散指标.(2015.7.1)

A/D指标,Accumulation/Distribution积累/派发线,离散指标观井映天2015.7.1转载于:https://www.cnblogs.com/i201102053/p/10626638.html

linux 密码修改下次,问题:如何强制用户在下次登录Linux时更改密码

当你使用默认密码创建用户时,你必须强制用户在下一次登录时更改密码。当你在一个组织中工作时,此选项是强制性的。因为老员工可能知道默认密码,他们可能会也可能不会尝试不当行为,看到下图会不会有为用户担心的感觉:使用 passwd 命…

tableau获取筛选器值_认识Tableau中的筛选器

Tableau中的筛选器:(1)提取筛选器(2)数据源筛选器(3)上下文筛选器(4)维度筛选器(5)度量筛选器(6)参数筛选器(7)表计算筛选器(8)页面筛选器对筛选器进行简单的分类:数据层(提取筛选器、数据源筛选器、上下文筛选器、参数筛选器)视图层(维度筛选器、度量筛…

类与对象的实例属性

class Chinese: countrychina def __init__(self,name): self.namename def playball(self,ball): print(%s正在打%s%(self.name,ball))name1input(>>>)#输入输出尽量别放函数里p1Chinese(name1)p1.playball(足球)print(p1.country)#china,类的…

svn的merge使用例子

先说说什么是branch。按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图: branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发&#xf…

C# 课堂总结2-数据类型及转换方式

一、输入输出语句 Console.ReadLine(); 会等待直到用户按下回车,一次读入一行Console.ReadKey(); 则是等待用户按下任意键,一次读入一个字符。 二、数据类型 主要掌握: 1.值类型:int 整型,float 浮点型(单精…

linux编译c gedit,[2018年最新整理]LINUX-Gedit文本编辑器.ppt

[2018年最新整理]LINUX-Gedit文本编辑器Gedit文本编辑器 系别:电信系 班级:08 自动化 姓名:张小亚 学号: 30 号 辅导老师:兰建平 Gedit的启动与打开文本 Gedit可以用命令或主菜单的方式两种方式启动。打开文件可以在终…

jsx怎么往js里传参数_在vue中使用jsx语法的使用方法

什么是JSX?JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到我为什么要在vue中用JSX?想折腾一下呗,开玩笑.最开始是因为近期在学习react,在里面体验了一把jsx语法,发现也并没有别人说的很难受的感觉啊,于是就想尝试在vue…

如何对数据库中的表以及表中的字段进行重命名

貌似没有直接的SQL语句可以做到这一点,除非删除再加。。。 SQL SERVER 中提供了存储过程:SP_RENAME 对表进行重命名: 更多详见:https://msdn.microsoft.com/zh-cn/library/ms188351.aspx转载于:https://www.cnblogs.com/xwgli/p/4…

系统优化-----sysctl.conf文件内核设置参数详解

摘自https://blog.csdn.net/tallercc/article/details/52823075 sysctl.conf工作原理 sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/IP堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员…

How Tomcat works — 一、怎样阅读源码

在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法。一直想阅读一些开源项目,可是没有合适的机会开始。最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的session本身就支持,发现自己…

linux c字符连接,C 语言实例

指针方法:#include int main(){char str1[100], str2[100], *p str1,n 0;printf("请输入第一个字符串:");scanf("%s", str1);printf("请输入第二个字符串:");scanf("%s", str2);while (*p ! \0);/*移动指针到str1尾*/--p…

plot画分段函数_python画图函数大全

很多时候,我们需要用python画图,这样就可以更加直观的看到数据的走势,而不是干巴巴的数字。今天,我们就给大家整理了一下python画图的常用函数,由于篇幅限制。无法将这些函数的使用方法全部表现出来。所以,…

BZOJ 2145 悄悄话

悄悄话 写的筋疲力尽,从下午8点开始写,现在已经一点半了。 主要就是一个暴力,然后加上算权值。用单词词频来搞。 但是第10个测试点 Madam, Im Adam.出事了,因为我有符号还是会把单词分开,然后无法识别Im 最后强行面向数…