一、摘要
最近在做一个排序的东西,被python的字符串编码格式折腾了一会儿,总结下
二、排序
英文排序不用说,sort sorted 比较好,内部已经实现
主要是中文,方法是查表获取拼音再进行排序。但编码格式很让人无奈,utf-8是1个字节,unicde是2个字节,在打印获取数据的过程中很无奈。
encode 可将unicde字符串转化为指定格式
decode 可将指定格式支付串转为unicode格式
以下是网上找的例子:
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]))
lamba表达式理解为以下:
for name in names: print ‘\n name:‘,name.encode(‘utf-8‘) tmp_dict = [] for j in name: print ‘\n ---+‘,j.encode(‘utf-8‘) print ‘\n ---+‘,pinyin_dict.get(j) tmp_dict.append(pinyin_dict.get(j)) print ‘‘.join(tmp_dict)
时间: 2024-10-18 02:13:24