python 汉字按拼音排序

python 汉字按拼音排序,

 

原理很简单,就是根据汉字拼音字典,将汉字转为拼音,然后sort一下就好了,不过对于多音字倒是没有办法了。

 

#encoding:utf-8
import re

def sort_pinyin (names):
	'''pinyin.txt:
	吖	a1
	阿	a1
	啊	a1
	锕	a1
	錒	a1
	嗄	a2
	厑	aes
	'''
	pinyin = file('pinyin.txt').read().decode('utf-8').split('\n')
	pinyin_dict = {}
	for line in pinyin:
		if not line.strip():
			continue
		tmp = line.split('\t')
		pinyin_dict[tmp[0].strip()] = re.sub(r'\d*','',tmp[1].strip())
	
	names_sort = sorted (names, key=lambda x:''.join([pinyin_dict.get(i) for i in x]))
	
	return names_sort
	
if __name__ == "__main__":
	x = u'广州, 深圳, 北京, 长沙, 上海, 武汉, 成都, 南京, 重庆, 济南, 南宁, 西安, 天津, 合肥, 东莞, 厦门, 昆明, 岳阳, 海口, 长春, 徐州, 德阳, 南昌, 沈阳, 太原, 兰州, 太仓, 杭州, 芜湖, 佛山, 肇庆, 福州, 安顺, 大连, 扬州, 北海, 乌鲁木齐, 青岛, 贵阳'
	x = x.split(', ')
	
	x2 = sort_pinyin(x)
	for i in x:
		print i,
	print '\n------------'
	for i in x2:
		print i,
		
	'''oupput 
	安顺 北海 北京 长春 长沙 成都 大连 德阳 东莞 佛山 福州 广州 贵阳 海口 杭州 合肥
	济南 昆明 兰州 南昌 南京 南宁 青岛 厦门 上海 深圳 沈阳 太仓 太原 天津 乌鲁木齐
	芜湖 武汉 西安 徐州 扬州 岳阳 肇庆 重庆
	'''

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值