python取漢字的拼音的首個字母

來源:互聯網
上載者:User

 最近需要寫指令碼,有個要取漢字拼音首字母的需求,上網查了一些材料,發現很容易實現,提出來大家分享。本指令碼用於漢字的拼音的首個字母,如:”我是中國人“,得出的字母為:wszgr。

 

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

運行如下:

 650) this.width=650;" border="0" alt="" src="http://img1.51cto.com/attachment/201209/085337988.jpg" />

 

本文出自 “王偉” 部落格,請務必保留此出處http://wangwei007.blog.51cto.com/68019/983289

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.