Python unicode 翻译使输入保持不变

问题描述

我编写了一个用于翻译/音译波斯语字符的 Python 代码。这是翻译表的一大块:

dictionary = {
'\u062B': 's̱','\u062C': 'ǧ',}

'\u062B' 是 "ث" 应该翻译成 "s̱"

但是当我运行以下命令时:

string = ('\u062B')
print("Original string:",string)

string = ('\u062B')
print("Translated string:",string.translate(dictionary))

我的原始字符串和翻译后的字符串是一样的:

Original string: ث
Translated string: ث

所以翻译不会发生。我做错了什么?

解决方法

str.translate method 表从 unicode ordinals(即整数)映射到序数、字符串或无。使用 str.maketrans 适当地转换字符串到字符串的映射:

>>> string
'ث'
>>> str.maketrans(dictionary)
{1579: 's̱',1580: 'ǧ'}
>>> string.translate(str.maketrans(dictionary))
's̱'