`
ipython
  • 浏览: 289170 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

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 楼 jacklin2015 2016-12-28  


挺好用的 就是 多音字 有待改进  比如 重庆

相关推荐

Global site tag (gtag.js) - Google Analytics