Skip to content

Instantly share code, notes, and snippets.

@zhuth
Created October 17, 2014 06:44
Show Gist options
  • Save zhuth/bc045fb277edcac3517a to your computer and use it in GitHub Desktop.
Save zhuth/bc045fb277edcac3517a to your computer and use it in GitHub Desktop.
获取拼音缩写
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def multi_get_letter(str_input):
return_list = []
for one_unicode in str_input:
return_list.append(single_get_first(one_unicode))
return return_list
def single_get_first(unicode1):
#str1 = unicode1
str1 = unicode1.decode('utf8').encode('gbk')
try:
return chr(ord(str1))
#return str1
except:
asc = ord(str1[0])*256 + ord(str1[1]) - 65536
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 get_first_letter(str_input):
a = multi_get_letter(str_input)
#print(a)
b = ''
for i in a:
b= b+str(i)
#print(b)
return b.lower()
################################################################
def main(str_input):
a = multi_get_letter(str_input)
print(a)
b = ''
for i in a:
b= b+str(i)
print(b)
if __name__ == "__main__":
f = open("contacts.vcf", "r")
fo = open("contacts_abbr.vcf", "w+")
for s in f:
if s.startswith('N:'):
x = 3 if s[0] == 'F' else 2
p = s[0:x] + single_get_first(s[x:]).upper() + ' ' + s[x:]
fo.write(p)
else:
fo.write(s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment