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 相关文章推荐
python实现备份目录的方法
Aug 03 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
Python同步遍历多个列表的示例
Feb 19 Python
django 控制页面跳转的例子
Aug 06 Python
Python搭建HTTP服务过程图解
Dec 14 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python 爬虫如何实现百度翻译
Nov 16 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 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基于imap获取邮件实例
2014/11/11 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
event.X和event.clientX的区别分析
2011/10/06 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python 同时读取多个文件的例子
2019/07/16 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
文员岗位职责范本
2014/03/08 职场文书
商场主管竞聘书
2014/03/31 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
2014中考励志标语
2014/06/05 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
学生会主席任命书
2015/09/21 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript
python计算列表元素与乘积详情
2022/08/05 Python