Python汉字转换成拼音
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python汉字转换成拼⾳
最近在使⽤Python做项⽬时,需要将汉字转化成对应的拼⾳.在Github上找到了⼀个现成的程序.
使⽤实例如下:
from pinyin import PinYin
test = PinYin()
test.load_word()
print test.hanzi2pinyin(string='钓鱼岛是中国的')
print test.hanzi2pinyin_split(string='钓鱼岛是中国的', split="-")
输出:
['diao', 'yu', 'dao', 'shi', 'zhong', 'guo', 'de']
'diao-yu-dao-shi-zhong-guo-de'
其中hanzi2pinyin函数返回值是⼀个列表,⽽hanzi2pinyin_split函数在split参数为空时返回列表,不为空是返回字符串.
但程序存在两个问题,第⼀是当中⽂中夹带英⽂时,英⽂会丢失.第⼆则是hanzi2pinyin_split的返回值⼀会是列表,⼀会是字符串,让⼈⽐较迷糊.例如:
test.hanzi2pinyin_split(string='钓鱼岛是中国的code123', split="")
我们期待的结果是:
u'diaoyudaoshizhongguodecode123'
但实际结果为:
u'diaoyudaoshizhongguode'
为此,在原来的程序中做了如下改写.
1.hanzi2pinyin函数修改
原来的hanzi2pinyin函数:
def hanzi2pinyin(self, string=""):
result = []
if not isinstance(string, unicode):
string = string.decode("utf-8")
for char in string:
key = '%X' % ord(char)
result.append(self.word_dict.get(key, char).split()[0][:-1].lower())
return result
修改后的hanzi2pinyin函数:
def hanzi2pinyin(self, string=""):
result = []
if not isinstance(string, unicode):
string = string.decode("utf-8")
for char in string:
key = '%X' % ord(char)
if not self.word_dict.get(key):
result.append(char)
else:
result.append(self.word_dict.get(key, char).split()[0][:-1].lower())
return result
修改后的hanzi2pinyin函数可以避免中英⽂混合的情况下,英⽂丢失.
2.hanzi2pinyin_split函数修改,将返回值为统⼀为字符串
原来的hanzi2pinyin_split函数:
def hanzi2pinyin_split(self, string="", split=""):
result = self.hanzi2pinyin(string=string)
if split == "":
return result
else:
return split.join(result)
修改后的hanzi2pinyin_split函数(不论split参数是否为空,hanzi2pinyin_split均返回字符串): def hanzi2pinyin_split(self, string="", split=""):
result = self.hanzi2pinyin(string=string)
#if split == "":
# return result
#else:
return split.join(result)。