Подтвердить что ты не робот

Перевод символов с использованием Python (например, команда tr)

Есть ли способ сделать перевод символов (вроде команды tr) с помощью python

4b9b3361

Ответ 1

См. string.translate

import string
"abc".translate(string.maketrans("abc", "def")) # => "def"

Обратите внимание на комментарии doc о тонкостях в переводе строк юникода.

Изменить: поскольку tr немного более продвинутый, также рассмотрите возможность использования re.sub.

Ответ 2

Если вы используете python3 translate, это не так много слов:

>>> 'abc'.translate(str.maketrans('ac','xy'))
'xby'

Ahh.. и также эквивалентно tr -d:

>>> "abc".translate(str.maketrans('','','b'))
'ac' 

Для tr -d с python2.x используйте дополнительный аргумент для перевода функции:

>>> "abc".translate(None, 'b')
'ac'

Ответ 3

Я разработал python-tr, реализованный алгоритм tr. Попробуем это.

Установка:

$ pip install python-tr

Пример:

>>> from tr import tr
>>> tr('bn', 'cr', 'bunny')
'curry'
>>> tr('n', '', 'bunny', 'd')
'buy'
>>> tr('n', 'u', 'bunny', 'c')
'uunnu'
>>> tr('n', '', 'bunny', 's')
'buny'
>>> tr('bn', '', 'bunny', 'cd')
'bnn'
>>> tr('bn', 'cr', 'bunny', 'cs')
'brnnr'
>>> tr('bn', 'cr', 'bunny', 'ds')
'uy'

Ответ 4

В Python 2 unicode.translate() принимает обычные сопоставления, т.е. нет необходимости ничего импортировать:

>>> u'abc+-'.translate({ord('+'): u'-', ord('-'): u'+', ord('b'): None})
u'ac-+'

Метод translate() особенно полезен для замены символов (как "+" и "-" выше), что невозможно сделать с помощью replace(), а использование re.sub() для этой цели не очень простое либо.

Я должен признать, однако, что повторное использование ord() не делает код похожим на приятный и аккуратный.

Ответ 5

Это работает для Python 3

-int('(1200)'.translate(str.maketrans('','','()')))

Ответ 6

Более простой подход может заключаться в замене. например.

 "abc".replace("abc", "def")
'def'

Не нужно ничего импортировать. Работает в Python 2.x