Python maketrans() 和 translate() 不起作用

Python maketrans() and translate() not working

提问人:SuperChincillaToTheMax 提问时间:8/22/2023 最后编辑:SuperChincillaToTheMax 更新时间:8/22/2023 访问量:49

问:

尝试利用 Python 字符串 translate() 和 maketrans() 方法来替换字符串。是的,两个字符串的长度相同。当我用“Serena”替换“Tuxedo”时,它有效。当我用“燕尾服”替换“Serena”时,我得到了“Texedo”。

sailorsquad = str.maketrans("Serena","Tuxedo")
txt = "Serena"
txt.translate(sailorsquad)
'Texedo'
sailorsquad = str.maketrans("Tuxedo","Serena")
txt = "Tuxedo"
txt.translate(sailorsquad)
'Serena'

还尝试只做txt.translate,但仍然不起作用。

Python 字符串 方法 翻译

评论

2赞 DallogFheir 8/22/2023
Serena 有 2 个 e s,第二个(映射到 e)覆盖第一个(映射到 u)。
2赞 John Gordon 8/22/2023
你误解了工作原理。它不会翻译整个字符串,而是翻译单个字符。您指定的翻译包含“e”的两个不同映射。maketrans()

答:

2赞 wim 8/22/2023 #1

“Serena”有两个 e,所以当你用 和 制作一个翻译表时,最后一个获胜:e -> ue -> e

>>> str.maketrans("Serena","Tuxedo") == str.maketrans("Srena", "Txedo")
True

换句话说,“e”仍然映射到该转换表中的“e”:

>>> chr(str.maketrans("Serena","Tuxedo")[ord('e')])
'e'

反之,效果很好,因为“燕尾服”的字母都是独一无二的。Tuxedo -> Serena

如果你真的想替换整个单词而不是单个字符,也许你只想简单地使用 str.replace 来代替:

>>> "Hello Serena".replace("Serena", "Tuxedo")
'Hello Tuxedo'

评论

0赞 SuperChincillaToTheMax 8/24/2023
谢谢!我想我误解了方法。