查汉字拼音的程序
马克同学是我们公司的活宝,更是一个喜欢学习汉语的好青年!他自己琢磨着装上了scim,现在还可以用拼音输入法在skype上用汉语向我问好了。说起来比较囧的是,我教他的第一个汉字就是“囧”……因为这是个典型的象形字!我还郑重地告诉他,其实不少中国人自己也不知道怎么念这个字!
有一天喝咖啡时,马克同学问我知道了一个汉字怎么查它的拼音?问得好!在我们看来知道拼音是理所当然的,但对老外们来说确实是个问题。我搜了一下,扔给他一个供小学生使用的查拼音的在线网站。后来想想这样不太好,因为那个网站本身就是中文的……于是我用Python编了这么个小程序,打算下周上班时送给马克同学。
[python]
!/usr/bin/env python
import os,sys
import string
import urllib2
import zipfile
def find_it(x, lines):
ret = []
for line in lines:
if line.find(x)!=-1:
ret.append(line.split(“:”)[0].strip())
return ret
if name == ‘main‘:
if len(sys.argv) != 2:
print "Ni hao! Chu cuo le!"
sys.exit(1)
if os.getenv("LANG").upper().find("UTF8") == -1:
print "Please use UTF-8 locale!"
sys.exit(2)
try:
f = open('/tmp/pinyinsfssafd.zip', 'r+')
except IOError:
req = urllib2.Request('http://blogimg.chinaunix.net/blog/upfile2/080906001029.zip')
resp = urllib2.urlopen(req)
zfile = resp.read()
f = open('/tmp/pinyinsfssafd.zip', 'w')
f.write(zfile)
f.close()
finally:
z = zipfile.ZipFile("/tmp/pinyinsfssafd.zip", "r")
bytes = z.read('pinyin.txt')
lines = bytes.split('rn')
x = sys.argv[1]
for c in x.decode('utf-8'):
if c == u'-':
continue
if c in string.letters:
continue
if c in string.digits:
continue
ret = find_it(c.encode('utf-8'), lines)
if ret:
print c+" can be read as : "+'/'.join(ret)
z.close()
[/python]