Python 返回汉字的汉语拼音


Posted in Python onFebruary 27, 2009

后来想到自己Delphi有一个获得拼音的代码。于是找了出来。研究了一下代码如下:

function get_hz_pywb(hzstr: string; pytype: integer): string; 
var 
I: Integer; 
allstr: string; 
hh: THandle; 
pp: pointer; 
ss: TStringList; 
function retturn_wbpy(tempstr: string; tqtype: integer): string; 
var 
outstr, str: string; 
i: integer; 
begin 
//################### 汉字查询电位 
i := 0; 
while i <= ss.Count - 1 do 
begin 
str := ss.Strings[i]; 
if (tempstr = trim(str[1] + str[2])) or (tempstr = trim(str[3] + str[4])) then 
begin 
str := ss.Strings[i]; 
Break; 
end; 
i := i + 1; 
end; 
//################### 
outstr := ''; //提取编码 
if tqtype = 1 then 
begin 
for i := pos('①', str) + 2 to pos('②', str) - 1 do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
if tqtype = 2 then 
begin 
for i := pos('②', str) + 2 to pos('③', str) - 1 do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
if tqtype = 3 then 
begin 
for i := pos('③', str) + 2 to pos('④', str) - 1 do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
if tqtype = 4 then 
begin 
for i := pos('④', str) + 2 to length(str) do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
Result := trim(outstr); 
end; 
begin 
//加载资源文件,将内容赋值给 s 
ss := TStringList.Create; 
hh := FindResource(hInstance, 'mywb', 'TXT'); 
hh := LoadResource(hInstance, hh); 
pp := LockResource(hh); 
ss.Text := pchar(pp); 
UnLockResource(hh); 
FreeResource(hh); 
allstr := ''; 
i := 0; 
while i <= length(hzstr) do //提取汉字字符 
begin 
if (Ord(hzstr[I]) > 127) then 
begin 
if allstr = '' then 
allstr := retturn_wbpy(hzstr[I] + hzstr[I + 1], pytype) 
else 
allstr := allstr + retturn_wbpy(hzstr[I] + hzstr[I + 1], pytype); 
i := i + 2; 
end 
else 
begin 
if allstr = '' then allstr := hzstr[I] else allstr := allstr + hzstr[I]; 
i := i + 1; 
end; 
end; 
ss.Free; 
Result := trim(allstr); 
en 
function get_hz_pywb(hzstr: string; pytype: integer): string; 
var 
I: Integer; 
allstr: string; 
hh: THandle; 
pp: pointer; 
ss: TStringList; 
function retturn_wbpy(tempstr: string; tqtype: integer): string; 
var 
outstr, str: string; 
i: integer; 
begin 
//################### 汉字查询电位 
i := 0; 
while i <= ss.Count - 1 do 
begin 
str := ss.Strings[i]; 
if (tempstr = trim(str[1] + str[2])) or (tempstr = trim(str[3] + str[4])) then 
begin 
str := ss.Strings[i]; 
Break; 
end; 
i := i + 1; 
end; 
//################### 
outstr := ''; //提取编码 
if tqtype = 1 then 
begin 
for i := pos('①', str) + 2 to pos('②', str) - 1 do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
if tqtype = 2 then 
begin 
for i := pos('②', str) + 2 to pos('③', str) - 1 do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
if tqtype = 3 then 
begin 
for i := pos('③', str) + 2 to pos('④', str) - 1 do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
if tqtype = 4 then 
begin 
for i := pos('④', str) + 2 to length(str) do 
if str[i] <> '' then if outstr = '' then outstr := str[i] else outstr := outstr + str[i]; 
end; 
Result := trim(outstr); 
end; 
begin 
//加载资源文件,将内容赋值给 s 
ss := TStringList.Create; 
hh := FindResource(hInstance, 'mywb', 'TXT'); 
hh := LoadResource(hInstance, hh); 
pp := LockResource(hh); 
ss.Text := pchar(pp); 
UnLockResource(hh); 
FreeResource(hh); 
allstr := ''; 
i := 0; 
while i <= length(hzstr) do //提取汉字字符 
begin 
if (Ord(hzstr[I]) > 127) then 
begin 
if allstr = '' then 
allstr := retturn_wbpy(hzstr[I] + hzstr[I + 1], pytype) 
else 
allstr := allstr + retturn_wbpy(hzstr[I] + hzstr[I + 1], pytype); 
i := i + 2; 
end 
else 
begin 
if allstr = '' then allstr := hzstr[I] else allstr := allstr + hzstr[I]; 
i := i + 1; 
end; 
end; 
ss.Free; 
Result := trim(allstr); 
en

这里需要用到一个资源文件。随后我会把资源文件地址发上来。
我把他改成Python代码供大家研究。。。。
# -*-coding:utf-8-*- 
# 返回汉字的拼音 
def Return_pinyin(word): 
global reslist 
for line in reslist: 
if (word==line[0]+line[1]) or (word==line[2]+line[3]): 
str = line 
break 
# 取①和②之间的内容 
s = str.find(u'①')+4 
e = str.find(u'②')+3 
return str[s:e] def GetPy(word): 
#首先装载资源文件 
i=0 
allstr = '' 
while i<len(word): 
if ord(word[i])>127: 
if allstr: 
allstr += Return_pinyin(word[i]+word[i+1]) 
else: 
allstr = Return_pinyin(word[i]+word[i+1]) 
i +=2 
else: 
if allstr: 
allstr += word[i] 
else: 
allstr = word[i] 
i +=1 
return allstr 
if __name__=='__main__': 
f = open('wbtext1.txt','r') 
reslist = f.readlines() 
f.close() 
word = raw_input(u'请输入汉字: ') 
print GetPy(word).lower()

如果大家有什么问题欢迎讨论。。。。。。
Python 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
Python自动生产表情包
Mar 17 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
使用Python 统计高频字数的方法
Jan 31 Python
Django打印出在数据库中执行的语句问题
Jul 25 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
Python短信轰炸的代码
Mar 25 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
用Python的urllib库提交WEB表单
Feb 24 #Python
wxpython 学习笔记 第一天
Feb 09 #Python
python 输出一个两行字符的变量
Feb 05 #Python
Python 调用DLL操作抄表机
Jan 12 #Python
Python MD5文件生成码
Jan 12 #Python
Python Mysql数据库操作 Perl操作Mysql数据库
Jan 12 #Python
Python 学习笔记
Dec 27 #Python
You might like
PHP编码转换
2012/11/05 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
js 调用百度分享功能
2017/02/27 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
用JS实现选项卡
2020/03/23 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python封装shell命令实例分析
2015/05/05 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
简单实现python数独游戏
2018/03/30 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
django orm模块中的 is_delete用法
2020/05/20 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
旧时光糖果:Old Time Candy
2018/02/05 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
大学生自我鉴定范文模板
2014/01/21 职场文书
大学生暑期实践感言
2014/02/26 职场文书
一句话工作感言
2014/03/01 职场文书
西式结婚主持词
2014/03/14 职场文书
专家推荐信模板
2014/05/09 职场文书
工作求职自荐信
2014/06/13 职场文书
国庆节慰问信
2015/02/15 职场文书
sql注入报错之注入原理实例解析
2022/06/10 MySQL