Есть ли способ сделать перевод символов (вроде команды tr) с помощью python
Перевод символов с использованием Python (например, команда tr)
Ответ 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