python获取汉字首字母
获取汉字首字母
关注公众号“轻松学编程”了解更多。
应用场景之一:可用于获取名字首字母,在数据库中查询记录时,可以用它来排序输出。
from pytz import unicode
# 获取汉字首字母
def multi_get_letter(str_input):
if isinstance(str_input, unicode):
unicode_str = str_input
else:
try:
unicode_str = str_input.decode('utf8')
except:
try:
unicode_str = str_input.decode('gbk')
except:
print('unknown coding')
return
return_list = []
for one_unicode in unicode_str:
return_list.append(single_get_first(one_unicode))
return return_list
def single_get_first(unicode1):
str1 = unicode1.encode('gbk')
# print(len(str1))
try:
ord(str1)
return str1
except:
asc = str1[0] * 256 + str1[1] - 65536
# print(asc)
if asc >= -20319 and asc <= -20284:
return 'a'
if asc >= -20283 and asc <= -19776:
return 'b'
if asc >= -19775 and asc <= -19219:
return 'c'
if asc >= -19218 and asc <= -18711:
return 'd'
if asc >= -18710 and asc <= -18527:
return 'e'
if asc >= -18526 and asc <= -18240:
return 'f'
if asc >= -18239 and asc <= -17923:
return 'g'
if asc >= -17922 and asc <= -17418:
return 'h'
if asc >= -17417 and asc <= -16475:
return 'j'
if asc >= -16474 and asc <= -16213:
return 'k'
if asc >= -16212 and asc <= -15641:
return 'l'
if asc >= -15640 and asc <= -15166:
return 'm'
if asc >= -15165 and asc <= -14923:
return 'n'
if asc >= -14922 and asc <= -14915:
return 'o'
if asc >= -14914 and asc <= -14631:
return 'p'
if asc >= -14630 and asc <= -14150:
return 'q'
if asc >= -14149 and asc <= -14091:
return 'r'
if asc >= -14090 and asc <= -13119:
return 's'
if asc >= -13118 and asc <= -12839:
return 't'
if asc >= -12838 and asc <= -12557:
return 'w'
if asc >= -12556 and asc <= -11848:
return 'x'
if asc >= -11847 and asc <= -11056:
return 'y'
if asc >= -11055 and asc <= -10247:
return 'z'
return ''
def main(str_input):
list1 = multi_get_letter(str_input)
res = ''
for i in list1:
if type(i).__name__ =='bytes':
i = i.decode()
res = res+i
print(res)
if __name__ == "__main__":
str_input=u'世界欢迎你'
main(str_input)
输出:
sjhyn
【更新说明】
现在已经出现一个专门把汉子转拼音的库pypinyin,直接导入这个库使用就行了
pip install pypinyin
from pypinyin import pinyin, lazy_pinyin
def get_acronym(str_data):
"""
获取字符串的首字母
:param str_data: 字符串
:return: 字符串
"""
return "".join([i[0][0] for i in pinyin(str_data)])
if __name__ == '__main__':
print('拼音', lazy_pinyin('婺城区'))
print('拼音', pinyin('䆔'))
print("首字母", get_acronym('䆔心坡'))
输出:
拼音 ['wu', 'cheng', 'qu']
拼音 [['chōng']]
首字母 cxp
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~