54

Pythontrを使用して文字の翻訳/音訳 (コマンドのようなもの) を行う方法はありますか?

Perl での例は次のとおりです。

my $string = "some fields";
$string =~ tr/dies/eaid/;
print $string;  # domi failed

$string = 'the cat sat on the mat.';
$string =~ tr/a-z/b/d;
print "$string\n";  # b b   b.  (because option "d" is used to delete characters not replaced)
4

6 に答える 6

53

見るstring.translate

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

Unicode 文字列の翻訳における微妙な点に関するドキュメントのコメントに注意してください。

また、Python 3 の場合は、次を直接使用できます。

str.translate(str.maketrans("abc", "def"))

編集:trはもう少し高度なので、 の使用も検討してre.subください。

于 2009-02-17T06:40:10.757 に答える
5

私は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'
于 2015-01-15T13:11:18.147 に答える
1

Python 2 では、unicode.translate()通常のマッピングを受け入れます。何もインポートする必要はありません:

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

このメソッドは、文字を交換する場合 (上記の「+」と「-」のように) に特に役立ちますが、これはではtranslate()実行できません。replace()re.sub()

ただし、 を繰り返し使用してord()も、コードがきれいに整頓されているようには見えないことは認めざるを得ません。

于 2014-04-18T17:41:42.637 に答える
-5

より簡単なアプローチは、replace を使用することです。例えば

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

何もインポートする必要はありません。Python 2.x で動作

于 2013-10-03T18:00:24.673 に答える