前言
本文介绍一个 go 汉字转拼音的库 go-pinyin,可以从名字看出这个库的功能就是将汉字转换为相应的拼音。接下来就由我来简单的介绍 go-pinyin 。
安装
使用此命令安装: go get github.com/mozillazg/go-pinyin
cli 安装
如果你的 go 版本在 1.17 以下使用此命令安装: go get -u github.com/mozillazg/go-pinyin/cli/pinyin
。1.17及以上版本使用此命令安装:go install github.com/mozillazg/go-pinyin/cli/pinyin@latest
。
使用
接下来将分别介绍 cli 的使用和 API 的使用。
cli 使用
安装完在终端输入 pinyin,可以看到使用的方法,尝试一个汉字,可以看到相应的拼音,但也可以看出对多音字的支持有问题。
$ pinyin 中国
zhōng guó
$ pinyin 重庆
zhòng qìng
接下来介绍 API 的使用。
api 使用
通过查看文档,可以看出主要是2个方法 pinyin.NewArgs
和 pinyin.Pinyin
。
pinyin.NewArgs
创建包含默认配置的 Args, 可以通过修改 Args 的成员来使用不同的模式。
type Args struct {
Style int // 拼音风格(默认: Normal)
Heteronym bool // 是否启用多音字模式(默认:禁用)
Separator string // Slug 中使用的分隔符(默认:-)
// 处理没有拼音的字符(默认忽略没有拼音的字符)
// 函数返回的 slice 的长度为0 则表示忽略这个字符
Fallback func(r rune, a Args) []string
}
pinyin.Pinyin
就是将汉字转为拼音。
接下来看一个简单的例子:
package main
import (
"fmt"
"github.com/mozillazg/go-pinyin"
)
func main() {
hans := "福建"
// 默认
a := pinyin.NewArgs()
fmt.Println(pinyin.Pinyin(hans, a))
// 包含声调
a.Style = pinyin.Tone
fmt.Println(pinyin.Pinyin(hans, a))
// 声调用数字表示
a.Style = pinyin.Tone2
fmt.Println(pinyin.Pinyin(hans, a))
hans = "重庆"
// 开启多音字模式
a = pinyin.NewArgs()
a.Heteronym = true
fmt.Println(pinyin.Pinyin(hans, a))
a.Style = pinyin.Tone2
fmt.Println(pinyin.Pinyin(hans, a))
}
输出:
[[fu] [jian]]
[[fú] [jiàn]]
[[fu2] [jia4n]]
[[zhong chong tong] [qing]]
[[zho4ng cho2ng to2ng] [qi4ng]]
通过结果可以看出对多音字的支持有问题。
小结
本文简单介绍了 go 中的中文转拼音的库go-pinyin,通过对库的使用,可以发现词库对多音字的支持有问题,但一些常规的支持还是很完善的。