Перевод символов с использованием Python (например, команда tr) - PullRequest
40 голосов
/ 17 февраля 2009

Есть ли способ сделать перевод символов (вроде команды tr), используя python

Ответы [ 5 ]

38 голосов
/ 17 февраля 2009

См. string.translate

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

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

Редактировать: * * * * * * * * * * * * * * * * * * * * - * * * * - * * * * * * * * * * * * * * * *.

22 голосов
/ 06 сентября 2009

Если вы используете python3, перевод менее подробный:

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

Ааа .. и есть также эквивалент tr -d:

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

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

>>> "abc".translate(None, 'b')
'ac'
5 голосов
/ 15 января 2015

Я разработал 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'
1 голос
/ 18 апреля 2014

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

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

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

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

0 голосов
/ 03 октября 2013

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...