说我有一个拼音:
gēge
我如何获得重音字符的“音调编号”? 例如,在这种情况下,ē将是第一音,理想输出将是ge1ge。但实际上,第一步是如何将音调转换为数字?
输入/输出示例:
gēge
nǎinai
wàipó
BECOMES
ge1ge
na3inai
wa4ipo2
我想在python中理想地做到这一点,但我很灵活。
谢谢! :)
答案 0 :(得分:3)
当以正常形式D(*)(分解)表示时,四个拼音使用以下组合(unicode)符号:
'\u0304'
)进行音调1 '\u0301'
)'\u030c'
)获得音调3 '\u0300'
)这意味着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)
然后您可以使用:
>>> print(to_tone_number('''gēge
nǎinai
wàipó'''))
ge1ge
na3inai
wa4ipo2
在Python 3中,或在Python 2中:
>>> print(to_tone_number(u'''g\u0113ge
n\u01ceinai
w\xe0ip\xf3'''))
ge1ge
na3inai
wa4ipo2
(*)参考:
答案 1 :(得分:0)
使用正则表达式。有一个有用的正则表达式命令:
re.findall()
您可以先使用它来识别所有重音字符,然后用字符串替换方法替换它们,
str.replace('ē','e3')
例如