Python - 用另一个列表替换字符列表

Cha*_*ist -1 python string unicode

我有两个清单:

wrong_chars = [
    ['?','?','?','?','?','?'],
    ['?','?','?','?','?','?'],
    ['?','?','?','?','?','?'],
    ['?','?','?','?','?','?'],
]

true_chars = [
    ['?'],
    ['?'],
    ['?'],
    ['?'],
]
Run Code Online (Sandbox Code Playgroud)

对于给定的字符串,我要替换的条目wrong_chars与那些在true_chars.在python中有一个干净的方法吗?

Sla*_*off 7

string 模块救援!

虽然您必须将翻译映射作为字典传递,但是作为string模块的一部分,有一个非常方便的函数translate可以完成您正在寻找的内容.

文档在这里

基于tutoriapoint教程的示例如下所示:

>>> from string import maketrans

>>> trantab = maketrans("aeiou", "12345")
>>> "this is string example....wow!!!".translate(trantab)

th3s 3s str3ng 2x1mpl2....w4w!!!
Run Code Online (Sandbox Code Playgroud)

看起来你在这里使用的是unicode,它的工作方式略有不同.你可以看看这个问题来理解,但是这里有一个更具体的例子:

translation_dict = {}
for i, char_list in enumerate(wrong_chars):
    for char in char_list:
        translation_dict[ord(char)] = true_chars[i]

example.translate(translation_dict)
Run Code Online (Sandbox Code Playgroud)