使用Python进行字符转换(如tr命令)

有没有一种方法可以使用python进行字符翻译(类似于tr命令)

hhafez asked 2020-08-12T08:01:04Z
5个解决方案
39 votes

查看string.translate

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

请注意文档中有关unicode字符串翻译中微妙之处的评论。

编辑:由于tr更高级,因此也可以考虑使用re.sub

Richard Levasseur answered 2020-08-12T08:01:18Z
23 votes

如果您使用的是python3,则翻译较为冗长:

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

啊..也等于tr -d

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

对于带有python2.x的tr -d,请使用附加参数来转换函数:

>>> "abc".translate(None, 'b')
'ac'
Piotr Czapla answered 2020-08-12T08:01:47Z
5 votes

我已经开发了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'
  • [HTTPS://皮衣皮.Python.org/皮衣皮/Python-突然]
  • [HTTPS://GitHub.com/i可GA迷-Yuki no/Python-突然]
Yukino Ikegami answered 2020-08-12T08:02:24Z
1 votes

在Python 2中,ord()接受普通映射,即。 也不需要导入任何东西:

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

ord()方法对于交换字符(如上面的“ +”和“-”)特别有用,这对于replace()而言是无法实现的,为此,使用re.sub()也不是很简单。

但是,我不得不承认,重复使用ord()不会使代码看起来很整洁。

lenz answered 2020-08-12T08:02:55Z
-5 votes

一个更简单的方法可能是使用replace。 例如

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

无需导入任何东西。 在Python 2.x中工作

Chris Haag answered 2020-08-12T08:03:20Z
translate from https://stackoverflow.com:/questions/555705/character-translation-using-python-like-the-tr-command