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】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

公众号

赞赏码

关注我,我们一起成长~~

posted @ 2018-06-02 14:09  轻松学编程  阅读(2090)  评论(0编辑  收藏  举报