golang,go,博客,开源,编程

golang每日一库之go-pinyin

Published on with 0 views and 0 comments

go-pinyin 汉字转拼音库

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.Normal
py := pinyin.Pinyin("汉字", args)
fmt.Println(py) // 输出: [[han] [zi]]

3. 数字音调

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

4. 声母(首字母)

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

5. 仅韵母

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

6. 带 ü 的拼音

args.Style = pinyin.Tone3
py := 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