假设我有一个拼音:
\n\ng\xc4\x93ge\nRun Code Online (Sandbox Code Playgroud)\n\n我怎样才能得到重音字符的“音号”?\neg,在这种情况下,\xc4\x93 将是第一个音,理想的输出将是 ge1ge。但实际上,第一步是如何将音调转换为数字?
\n\n输入/输出示例:
\n\ng\xc4\x93ge\nn\xc7\x8einai\nw\xc3\xa0ip\xc3\xb3\nRun Code Online (Sandbox Code Playgroud)\n\n成为
\n\nge1ge\nna3inai\nwa4ipo2\nRun Code Online (Sandbox Code Playgroud)\n\n我想在 python 中理想地做到这一点,但我很灵活。
\n\n谢谢!:)
\n当用标准形式D(*)(分解)表示时,四拼音使用以下组合(unicode)符号:
\n\n\'\\u0304\' ) 以获得音调 1\'\\u0301\' ) 组合为声调 2\'\\u030c\' ) 以获得音调 3\'\\u0300\' ) 来生成音调 4这意味着 Python 中的自动处理几乎是微不足道的:将 (unicode) 字符串规范化为其规范形式 D,并将上述组合字符替换为其数字值
\n\n代码可以是:
\n\ndef to_tone_number(s):\n table = {0x304: ord(\'1\'), 0x301: ord(\'2\'), 0x30c: ord(\'3\'),\n 0x300: ord(\'4\')}\n return unicodedata.normalize(\'NFD\', s).translate(table)\nRun Code Online (Sandbox Code Playgroud)\n\n然后您可以使用:
\n\n>>> print(to_tone_number(\'\'\'g\xc4\x93ge\nn\xc7\x8einai\nw\xc3\xa0ip\xc3\xb3\'\'\'))\nge1ge\nna3inai\nwa4ipo2\nRun Code Online (Sandbox Code Playgroud)\n\n在 Python 3 或 Python 2 中:
\n\n>>> print(to_tone_number(u\'\'\'g\\u0113ge\nn\\u01ceinai\nw\\xe0ip\\xf3\'\'\'))\nge1ge\nna3inai\nwa4ipo2\nRun Code Online (Sandbox Code Playgroud)\n\n(*) 参考文献:
\n\n