cover_image

golang每日一库之go-pinyin

大大大月饼 大大大月饼
2025年03月21日 00:47
图片

go-pinyin 汉字转拼音库

今天要介绍的库是一个拼音库,这个库相对比较冷门,但是开发过母婴类app的道友可能知道。

go-pinyin是一个用于将汉字转换为拼音的 Golang 库,提供多种模式,支持带音调、无音调、首字母提取等功能。

该库适用于拼音搜索、汉字排序、文本转换等场景。


安装

使用 go get 下载安装:

go get -u github.com/mozillazg/go-pinyin



基本用法

package main
import ( "fmt" "github.com/mozillazg/go-pinyin")
func main() { hans := "汉字转拼音" py := pinyin.Pinyin(hans, pinyin.NewArgs()) fmt.Println(py) // 输出: [[han] [zi] [zhuan] [pin] [yin]]}



默认情况下,Pinyin 方法会返回每个汉字的拼音,采用无音调的格式。


模式选项

go-pinyin 提供了多种模式,用户可以通过 pinyin.Args 结构体参数进行配置。

1. 带音调的拼音

args := pinyin.NewArgs()args.Style = pinyin.Tone // 设置拼音风格为带音调py := pinyin.Pinyin("汉字", args)fmt.Println(py) // 输出: [[hàn] [zì]]


2. 无音调(默认)

args.Style = pinyin.Normalpy := pinyin.Pinyin("汉字", args)fmt.Println(py) // 输出: [[han] [zi]]


3. 数字音调

args.Style = pinyin.Tone2py := pinyin.Pinyin("汉字", args)fmt.Println(py) // 输出: [[han4] [zi4]]


4. 声母(首字母)

args.Style = pinyin.Initialspy := pinyin.Pinyin("汉字", args)fmt.Println(py) // 输出: [[h] [z]]


5. 仅韵母

args.Style = pinyin.Finalspy := pinyin.Pinyin("汉字", args)fmt.Println(py) // 输出: [[an] [i]]


6. 带 ü 的拼音

args.Style = pinyin.Tone3py := pinyin.Pinyin("绿", args)fmt.Println(py) // 输出: [[lü4]]



获取拼音首字母

如果只想提取拼音的首字母,可以使用 pinyin.FirstLetter

py := pinyin.LazyPinyin("汉字", pinyin.NewArgs())fmt.Println(py) // 输出: [h z]



自定义拼音词库

可以为特定汉字或短语指定拼音:

customDict := map[string]string{	"重庆""chóng qìng",}args := pinyin.NewArgs()args.Fallback = func(r rune, a pinyin.Args) []string {	if val, ok := customDict[string(r)]; ok {		return []string{val}	}	return []string{string(r)}}
py := pinyin.Pinyin("重庆", args)fmt.Println(py) // 输出: [[chóng] [qìng]]



拼音转换应用场景

  1. 文本搜索
    • 用拼音索引文本,支持拼音模糊搜索。
  2. 汉字排序
    • 例如,将 "张三" 排在 "李四" 之后,按照拼音顺序排列名字。
  3. 文本转换
    • 将汉字转换为拼音,以便用于语音合成等应用。

最后

  • go-pinyin
     是一个强大、易用的 Golang 汉字转拼音库。
  • 支持多种风格:带音调、无音调、首字母等。
  • 可扩展,支持自定义拼音词库。
  • 适用于搜索、排序、文本处理等多种场景。

标题:golang每日一库之go-pinyin
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/03/21/1742517677048.html
联系:scotttu@163.com


继续滑动看下一个
大大大月饼
向上滑动看下一个