def get_user_friends_by_initial_words(user_id): dbsession = DBSession() friends = dbsession.query(FD_T_Friend).filter( FD_T_Friend.user_id == user_id).all() friends = [i.dict() for i in friends] friends = dbsession.query(FD_T_Friend.friend_id, FD_T_Friend.friend_name, FD_T_User.gender, FD_T_User.mcode, FD_T_User.qrcode, FD_T_User.phone_no, FD_T_User.email, FD_T_User.portrait_url, FD_T_User.city_id, FD_T_Citycode.city_name, FD_T_User.name, FD_T_User.birthday) \ .outerjoin(FD_T_User, FD_T_User.user_id == FD_T_Friend.friend_id) \ .outerjoin(FD_T_Citycode, FD_T_User.city_id == FD_T_Citycode.city_id) \ .filter(FD_T_Friend.user_id == user_id).distinct() friends = [{ 'friend_id': i[0], 'friend_name': i[1], 'gender': i[2], 'mcode': i[3], 'qrcode': i[4], 'phone_no': i[5], 'email': i[6], 'portrait_url': OSS_URL_PRIFIX + i[7] if i[7] else OSS_URL_PRIFIX + CONFIG.PORTRAIT_URL, 'city_id': i[8], 'city_name': i[9], 'name': i[10], 'birthday': i[11].strftime('%Y-%m-%d %H:%M:%S:%f') if i[11] else None } for i in friends] friends_cate = {} p = Pinyin() for i in friends: if i['friend_name']: initial_word = p.get_initial(i['friend_name'][0]).upper() if initial_word not in friends_cate: friends_cate[initial_word] = [] friends_cate[initial_word].append(i) else: initial_word = p.get_initial(i['name'][0]).upper() if initial_word not in friends_cate: friends_cate[initial_word] = [] friends_cate[initial_word].append(i) return { 'total_num': len(friends), 'friends': friends_cate, }
class PinyinTests(unittest.TestCase): def setUp(self): import cpinyin cpinyin.install() from xpinyin import Pinyin self.p = Pinyin() def test_get_pinyin_with_default_splitter(self): self.assertEqual(self.p.get_pinyin(u'上海'), u'shang-hai') def test_get_pinyin_with_splitter(self): self.assertEqual(self.p.get_pinyin(u'上海', splitter=u''), u'shanghai') def test_get_pinyin_mixed_words(self): self.assertEqual(self.p.get_pinyin(u'Apple发布iOS7', splitter=u'-'), u'Apple-fa-bu-iOS7') def test_get_pinyin_with_tone_marks(self): self.assertEqual(self.p.get_pinyin(u'上海', tone_marks=u'marks'), u'sh\xe0ng-h\u01cei') def test_get_pinyin_with_tone_marks(self): self.assertEqual(self.p.get_pinyin(u'秋', tone_marks=u'marks'), u'qiū') def test_get_initial(self): self.assertEqual(self.p.get_initial(u'你'), u'N') def test_get_initials(self): self.assertEqual(self.p.get_initials(u'你好'), u'N-H') def test_get_initials_with_splitter(self): self.assertEqual(self.p.get_initials(u'你好', u' '), u'N H') self.assertEqual(self.p.get_initials(u'你好', u''), u'NH')
def get_user_friends_by_initial_words(user_id): dbsession = DBSession() friends = dbsession.query(FD_T_Friend).filter(FD_T_Friend.user_id == user_id).all() friends = [i.dict() for i in friends] friends = dbsession.query(FD_T_Friend.friend_id, FD_T_Friend.friend_name, FD_T_User.gender, FD_T_User.mcode, FD_T_User.qrcode, FD_T_User.phone_no, FD_T_User.email, FD_T_User.portrait_url, FD_T_User.city_id, FD_T_Citycode.city_name, FD_T_User.name, FD_T_User.birthday) \ .outerjoin(FD_T_User, FD_T_User.user_id == FD_T_Friend.friend_id) \ .outerjoin(FD_T_Citycode, FD_T_User.city_id == FD_T_Citycode.city_id) \ .filter(FD_T_Friend.user_id == user_id).distinct() friends = [{'friend_id': i[0], 'friend_name': i[1], 'gender': i[2], 'mcode': i[3], 'qrcode': i[4], 'phone_no': i[5], 'email': i[6], 'portrait_url': OSS_URL_PRIFIX + i[7] if i[7] else OSS_URL_PRIFIX + CONFIG.PORTRAIT_URL, 'city_id': i[8], 'city_name': i[9], 'name': i[10], 'birthday': i[11].strftime('%Y-%m-%d %H:%M:%S:%f') if i[11] else None} for i in friends] friends_cate = {} p = Pinyin() for i in friends: if i['friend_name']: initial_word = p.get_initial(i['friend_name'][0]).upper() if initial_word not in friends_cate: friends_cate[initial_word] = [] friends_cate[initial_word].append(i) else: initial_word = p.get_initial(i['name'][0]).upper() if initial_word not in friends_cate: friends_cate[initial_word] = [] friends_cate[initial_word].append(i) return { 'total_num': len(friends), 'friends': friends_cate, }
# 转换简体到繁体 def chs_2_cht(sentence): sentence = Converter('zh-hant').convert(sentence) return sentence line_chs = '忧郁的台湾乌龟' line_cht = chs_2_cht(line_chs) print(line_cht) from xpinyin import Pinyin p = Pinyin() # 默认分隔符为- print(p.get_pinyin("上海")) # 显示声调 print(p.get_pinyin("上海", tone_marks='marks')) print(p.get_pinyin("上海", tone_marks='numbers')) # 去掉分隔符 print(p.get_pinyin("上海", '')) # 设为分隔符为空格 print(p.get_pinyin("上海", ' ')) # 获取拼音首字母 print(p.get_initial("上")) print(p.get_initials("上海")) print(p.get_initials("上海", '')) print(p.get_initials("上海", ' '))
#!usr/bin/env python #coding: utf-8 from xpinyin import Pinyin p = Pinyin() # default splitter is '-' print p.get_pinyin(u"上海") # show tone marks print p.get_pinyin(u"上海", tone_marks="marks") # 使用拼音声调符号 print p.get_pinyin(u"上海", tone_marks="numbers") # 使用拼音声调数字表示 # remove splitter print p.get_pinyin(u"上海", '') # 没有分隔符 # set splitter as whitespace print p.get_pinyin(u"上海", ' ') # 以空格分隔 # 显示单个汉字首字母大写 print p.get_initial(u"上") #显示多个汉字首字母大写,用‘-’链接 print p.get_initials(u"上海") # 取消连接符 print p.get_initials(u"上海", u'') # 使用空格链接 print p.get_initials(u"上海", u' ')
#!/usr/bin/env python #-*- coding:UTF-8 -*- import sys; from xpinyin import Pinyin p = Pinyin() # default splitter is `-` print p.get_pinyin(u"上海") # show tone marks print p.get_pinyin(u"上海", show_tone_marks=True) # remove splitter print p.get_pinyin(u"上海", '') # set splitter as whitespace print p.get_pinyin(u"上海", ' ') print p.get_initial(u"上") print p.get_initials(u"上海") print p.get_initials(u"上海", u'') print p.get_initials(u"上海", u' ') #如果方法中传入变量,那么直接加前缀是不可以了。而是要将变量转为utf-8编码: wordvalue = '中国' wordvalue= unicode(wordvalue,'utf-8') s = p.get_initials(wordvalue, u'').lower() print s