获取汉字首字母

关注公众号“轻松学编程”了解更多。

应用场景之一:可用于获取名字首字母,在数据库中查询记录时,可以用它来排序输出。


  1. from pytz import unicode
  2. # 获取汉字首字母
  3. def multi_get_letter(str_input):
  4. if isinstance(str_input, unicode):
  5. unicode_str = str_input
  6. else:
  7. try:
  8. unicode_str = str_input.decode('utf8')
  9. except:
  10. try:
  11. unicode_str = str_input.decode('gbk')
  12. except:
  13. print('unknown coding')
  14. return
  15. return_list = []
  16. for one_unicode in unicode_str:
  17. return_list.append(single_get_first(one_unicode))
  18. return return_list
  19. def single_get_first(unicode1):
  20. str1 = unicode1.encode('gbk')
  21. # print(len(str1))
  22. try:
  23. ord(str1)
  24. return str1
  25. except:
  26. asc = str1[0] * 256 + str1[1] - 65536
  27. # print(asc)
  28. if asc >= -20319 and asc <= -20284:
  29. return 'a'
  30. if asc >= -20283 and asc <= -19776:
  31. return 'b'
  32. if asc >= -19775 and asc <= -19219:
  33. return 'c'
  34. if asc >= -19218 and asc <= -18711:
  35. return 'd'
  36. if asc >= -18710 and asc <= -18527:
  37. return 'e'
  38. if asc >= -18526 and asc <= -18240:
  39. return 'f'
  40. if asc >= -18239 and asc <= -17923:
  41. return 'g'
  42. if asc >= -17922 and asc <= -17418:
  43. return 'h'
  44. if asc >= -17417 and asc <= -16475:
  45. return 'j'
  46. if asc >= -16474 and asc <= -16213:
  47. return 'k'
  48. if asc >= -16212 and asc <= -15641:
  49. return 'l'
  50. if asc >= -15640 and asc <= -15166:
  51. return 'm'
  52. if asc >= -15165 and asc <= -14923:
  53. return 'n'
  54. if asc >= -14922 and asc <= -14915:
  55. return 'o'
  56. if asc >= -14914 and asc <= -14631:
  57. return 'p'
  58. if asc >= -14630 and asc <= -14150:
  59. return 'q'
  60. if asc >= -14149 and asc <= -14091:
  61. return 'r'
  62. if asc >= -14090 and asc <= -13119:
  63. return 's'
  64. if asc >= -13118 and asc <= -12839:
  65. return 't'
  66. if asc >= -12838 and asc <= -12557:
  67. return 'w'
  68. if asc >= -12556 and asc <= -11848:
  69. return 'x'
  70. if asc >= -11847 and asc <= -11056:
  71. return 'y'
  72. if asc >= -11055 and asc <= -10247:
  73. return 'z'
  74. return ''
  75. def main(str_input):
  76. list1 = multi_get_letter(str_input)
  77. res = ''
  78. for i in list1:
  79. if type(i).__name__ =='bytes':
  80. i = i.decode()
  81. res = res+i
  82. print(res)
  83. if __name__ == "__main__":
  84. str_input=u'世界欢迎你'
  85. main(str_input)

输出:
sjhyn

【更新说明】

现在已经出现一个专门把汉子转拼音的库pypinyin,直接导入这个库使用就行了
pip install pypinyin

  1. from pypinyin import pinyin, lazy_pinyin
  2. def get_acronym(str_data):
  3. """
  4. 获取字符串的首字母
  5. :param str_data: 字符串
  6. :return: 字符串
  7. """
  8. return "".join([i[0][0] for i in pinyin(str_data)])
  9. if __name__ == '__main__':
  10. print('拼音', lazy_pinyin('婺城区'))
  11. print('拼音', pinyin('䆔'))
  12. print("首字母", get_acronym('䆔心坡'))

输出:

  1. 拼音 ['wu', 'cheng', 'qu']
  2. 拼音 [['chōng']]
  3. 首字母 cxp

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

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

python获取汉字首字母的更多相关文章

  1. JS获取汉字首字母

    //获取 汉字首字母 function makePy(str) { if (typeof (str) != "string") throw new Error(-1, " ...

  2. ASP.NET获取汉字首字母

    /// <summary> /// 获取汉字首字母(可包含多个汉字) /// </summary> /// <param name="strText" ...

  3. php获取汉字首字母

    php获取汉字首字母,可以用于按字母对数据进行检索排序等. 分享下网上找的代码.亲测有效. function getFirstCharter($str){ if(empty($str)){return ...

  4. JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...

  5. .NET获取汉字首字母

    /// <summary> /// 获取汉字首字母(可包含多个汉字) /// </summary> /// <param name="strText" ...

  6. php获取汉字首字母的函数

    本文介绍用php实现汉字转化为首字母的方法,主要功能是:功能明确,易于修改维护和扩展: 英文的字串:不变返回(包括数字):中文字符串:返回拼音首字符: 中英混合串: 返回拼音首字符和英文. 网上的方法 ...

  7. php获取汉字首字母实例

    在我们实际开发工作中,有时候需要获取输入汉字的首字母,然后存到库中,方便用户搜索相关信息,下面给出php代码,留做备用: //新添加获取汉子首字,首字字母 function pinyin($zh){ ...

  8. PHP获取汉字首字母并分组排序

    <?php /** * 错误状态码定义 * User: xiucai * Date: 2018/3/11 * Time: 12:23 */ namespace extend; class Wor ...

  9. c#获取汉字首字母拼音

    /* * 由SharpDevelop创建. * 用户: lenovo * 日期: 2013/10/22 * 时间: 20:15 * * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 */ ...

随机推荐

  1. Python-对字典进行排序

    案例: 某班英语成绩以字典的形式存储为: {'lili':78, 'jin':50, 'liming': 30, ......} 依据成绩高低,进行学生成绩排名 如何对字典排序? 方法1: #!/us ...

  2. Book of Shaders 01 - 关于函数造型能力的理解

    0x00 从函数出发 Shader 中的很多效果都是由函数计算得出的,如何更好地理解二者的关系呢.不妨先看看函数是什么?函数的定义可以简单地描述为:给定一个集合 A,对于其中的元素施加法则 f,则可以 ...

  3. 实验 5:OpenFlow 协议分析和 OpenDaylight 安装

    一.实验目的 回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接;通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内容 ...

  4. Visual Studio中Debug与Release以及x86、x64、Any CPU的区别 &&&& VS中Debug与Release、_WIN32与_WIN64的区别

    本以为这些无关紧要的 Debug与Release以及x86.x64.Any CPU 差点搞死人了. 看了以下博文才后怕,难怪我切换了一下模式,程序就pass了.... 转载: 1.https://ww ...

  5. Springboot集成JUnit5优雅进行单元测试

    为什么使用JUnit5 JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余. JUnit5易扩展,包容性强,可以接入其他的测试引擎. ...

  6. java性能分析之火焰图

    原由 最近因为kafka.zookeeper.ES和相关的Java应用的内存问题搞的头大,做运维将近4年,对Java调优.性能方面的知识了解的少之又少,是时候下定决心来对他多一个学习了.不能一口吃成一 ...

  7. 修改LiveChart的提示显示位置

    问题:修改LiveChart的提示显示位置 摘要:相信WPF开发者在用LiveCharts的时候会有遇到这个需求.就是产品要求折线图的提示要显示的正常点. 需求:如下图所示.原本显示是在下方并且没有小 ...

  8. MeteoInfoLab脚本示例:读取文本文件绘制散度图

    MeteoInfoLab中读取文本文件数据的函数是asciiread,获取文本文件行.列数的函数是numasciirow和numasciicol,和NCL中函数名一致,但都是小写字母.本例中的示例数据 ...

  9. json对象去重,根据指定字段

    function FilterByName(data, Name) { //data是json对象,Name是根据什么字段去重 var map = {}, dest = []; for (var i ...

  10. iproute2工具

    iproute2工具介绍 iproute2是linux下管理控制TCP/IP网络和流量控制的新一代工具包,出现目的是替代老工具链net-tools.net-tools是通过procfs(/proc)和 ...