您的位置:首页 > 编程语言 > Python开发

将GBK汉字转化为拼音的Python小程序

2005-09-13 10:06 483 查看
.comment {color:#009900}
.keyword {color:#0000FF; font-weight:bold}
.string {color:#999999}
.number {color:#FF0000}
.buildinfunctions {color:#FF0000}
.methods {color:#009999}
.attributes {color:#009999}
.exceptions {color:#FF0000}
.op {color:#993300}
.commonlibs {color:#660066}
.userdefine {color:#0000FF}

#!/usr/bin/python
# -*- coding: cp936 -*-

#################################
#   Written by caocao           #
#   caocao@eastday.com          #
#   http://nethermit.yeah.net   #
#################################

import sys
import re
import string

class CConvert:
def __init__(self):
"Load data table"
try:
fp=open("convert.txt")
except IOError:
print "Can't load data from data.txt\nPlease make sure this file exists."
sys.exit(1)
else:
self.data=fp.read()
fp.close()

def convert(self, strIn):
"Convert GBK to PinYin"
length, strOutKey, strOutValue, i=len(strIn), "", "", 0
while i<length:
if i==length-1:
strOutKey+=strIn[i:i+1]+" "
strOutValue+=strIn[i:i+1]+" "
break
code1, code2=ord(strIn[i:i+1]), ord(strIn[i+1:i+2])
if code1>=0x81 and code1<=0xFE and code2>=0x40 and code2<=0xFE and code2!=0x7F:
strTemp=self.getIndex(strIn[i:i+2])
strLength=len(strTemp)
if strLength<2:strLength=2
strOutKey+=string.center(strIn[i:i+2], strLength)+" "
strOutValue+=string.center(strTemp, strLength)+" "
i+=1;
else:
strOutKey+=strIn[i:i+1]+" "
strOutValue+=strIn[i:i+1]+" "
i+=1
return [strOutValue, strOutKey]

def getIndex(self, strIn):
"Convert single GBK to PinYin from index"
pos=re.search("^"+strIn+"([0-9a-zA-Z]+)", self.data, re.M)
if pos==None:
return strIn
else:
return pos.group(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: