以下是一个获取中文首字母的方法实现:
def get_chinese_first_letter(text: str) -> str: """ 获取中文字符串的首字母 :param text: 中文字符串 :return: 首字母,若为非中文则返回空字符串 """ if not isinstance(text, str): return '' if len(text) == 0: return '' code = ord(text[0]) if 19968 <= code <= 40869: # 中文字符 index = (code - 19968) // 94 + 1 return chr(index + 64) elif (65 <= code <= 90) or (97 <= code <= 122): # 英文字符 return text[0].upper() else: # 非中英文字符 return ''
该方法的原理是根据中文GB2312编码表,将中文字符的Unicode码与其对应的首字母进行映射,然后根据Unicode码范围判断其是否为中文字符,并返回对应的首字母。对于非中文字符(包括非中英文字符),则返回空字符串。