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
安顺 北海 北京 长春 长沙 成都 大连 德阳 东莞 佛山 福州 广州 贵阳 海口 杭州 合肥
济南 昆明 兰州 南昌 南京 南宁 青岛 厦门 上海 深圳 沈阳 太仓 太原 天津 乌鲁木齐
芜湖 武汉 西安 徐州 扬州 岳阳 肇庆 重庆
'''
本文介绍了一种使用拼音字典将汉字转换为拼音进行排序的方法,适用于处理包含多音字的汉字列表。通过读取预定义的拼音字典文件,该方法能够对汉字列表进行有效的拼音排序。
3759

被折叠的 条评论
为什么被折叠?



