从拼音中获取声调

2024-05-03 08:32:04 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有个拼音:

gēge

我怎样才能得到重音字符的“音调数”? 例如,在这种情况下,ē将是第一个音调,理想的输出是ge1ge。但实际上,第一步是如何将音调转换成数字?在

输入/输出示例:

^{pr2}$

变成

ge1ge
na3inai
wa4ipo2

我希望在python中实现这一点,但我很灵活。在

谢谢!:)


Tags: 示例情况数字字符拼音理想重音ge
2条回答

当以正常形式D(*)(分解)表示时,四个拼音声调使用以下组合(unicode)符号:

  • 组合用长音符('\u0304')表示音调1
  • 组合用锐音符('\u0301')表示音调2
  • 组合用抑扬符('\u030c')表示音调3
  • 组合用抑音符('\u0300')表示音调4

这意味着Python中的自动处理几乎是微不足道的:将(unicode)字符串规范化为其标准格式D,并用数字值替换上面的组合字符

代码可以是:

def to_tone_number(s):
    table = {0x304: ord('1'), 0x301: ord('2'), 0x30c: ord('3'),
         0x300: ord('4')}
    return unicodedata.normalize('NFD', s).translate(table)

然后可以使用:

^{pr2}$

在Python 3或Python 2中:

>>> print(to_tone_number(u'''g\u0113ge
n\u01ceinai
w\xe0ip\xf3'''))
ge1ge
na3inai
wa4ipo2

(*)参考文献:

使用正则表达式。有一个有用的regex命令:

re.findall() 

您可以先使用它来标识所有重音字符,然后用string replace方法替换它们

^{pr2}$

例如

相关问题 更多 >