查汉字拼音的程序

马克同学是我们公司的活宝,更是一个喜欢学习汉语的好青年!他自己琢磨着装上了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]