原文链接:http://www.juzicode.com/python-module-xpinyin/
xpinyin 是一个轻量级汉字转拼音库,支持带声调、无符号拼音及首字母转换,具备多音字识别和自定义分隔符功能,适用于中文数据处理、排序、检索等场景。
应用场景
- 中文姓名转拼音录入
- 生成汉字拼音索引
- 中文内容模糊搜索
- 批量处理中文文件名
- 语音合成预处理
- 多音字智能识别
安装与导入
pip install xpinyin
# juzicode.com/VX公众号:juzicode
from xpinyin import Pinyin
基本用法
1. 基础拼音转换
将汉字字符串转换为带分隔符的拼音,第2个参数为连字符,如果不输入默认为”-“,如果不希望输出“-”,则可以传入空格。
# juzicode.com/VX公众号:juzicode
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin("桔子代码", "-")
print(result)
result = p.get_pinyin("桔子代码", " ")
print(result)
运行结果:
ju-zi-dai-ma
2. 首字母缩写
提取每个汉字的首字母生成缩写,适用于快速索引创建。
# juzicode.com/VX公众号:juzicode
from xpinyin import Pinyin
p = Pinyin()
result = p.get_initials("北京", "")
print(result)
运行结果:
BJ
3. 带声调输出
显示拼音的声调数字标记,保留汉字发音特征。
# juzicode.com/VX公众号:juzicode
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin("重庆", tone_marks="numbers")
print(result)
运行结果:
chong2-qing4
4. 多音字处理
我们用多音字汉字,看是否可以正常处理:
# juzicode.com/VX公众号:juzicode
from xpinyin import Pinyin
p = Pinyin()
print(p.get_pinyin("银行行长"))
print(p.get_pinyin("人行道"))
运行结果:
yin-xing-xing-zhang
ren-xing-dao
【注意】从运行结果看,多音字的处理并不是很完美
5. 空值处理
转换时遇到非汉字字符,会自动跳过,保证了转换流程的稳定性。
# juzicode.com/VX公众号:juzicode
from xpinyin import Pinyin
p = Pinyin()
print(p.get_pinyin("Python3.10发布"))
运行结果:
Python3.10-fa-bu
总结
xpinyin模块为中文处理提供便捷的拼音转换方案:
- 支持多种拼音输出格式(带声调/无符号/首字母)
- 提供灵活的自定义选项(分隔符、拼音库等)
注意事项:
- 复杂多音字仍需人工校验
- 生僻字需要扩展拼音库
- 连续英文数字会保留原样输出