str.translate vs str.replace - Когда использовать какой? - PullRequest
0 голосов
/ 30 мая 2019

Когда и зачем использовать первое вместо второго и наоборот?

Не совсем понятно, почему некоторые используют первое и почему некоторые используют второе.

1 Ответ

3 голосов
/ 30 мая 2019

Они служат различным целям.

translate может заменить только отдельные символы произвольными строками, но один вызов может выполнить несколько замен.Его аргументом является специальная таблица, которая отображает отдельные символы в произвольные строки.

replace может заменить только одну строку, но эта строка может иметь произвольную длину.

>>> table = str.maketrans({'f': 'b', 'o': 'r'})
>>> table
{102: 'b', 111: 'r'}
>>> 'foo'.translate(table)
'brr'
>>> 'foo'.translate(str.maketrans({'fo': 'ff'}))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: string keys in translate table must be of length 1
>>> 'foo'.replace('fo', 'ff')
'ffo'
...