Character Translation using Python (like the tr command)
Is there a way to do character translation / transliteration (kind of like the tr
command) using Python?
Some examples in Perl would be:
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)
Solution 1:
See string.translate
import string
"abc".translate(string.maketrans("abc", "def")) # => "def"
Note the doc's comments about subtleties in the translation of unicode strings.
And for Python 3, you can use directly:
str.translate(str.maketrans("abc", "def"))
Edit: Since tr
is a bit more advanced, also consider using re.sub
.
Solution 2:
If you're using python3 translate is less verbose:
>>> 'abc'.translate(str.maketrans('ac','xy'))
'xby'
Ahh.. and there is also equivalent to tr -d
:
>>> "abc".translate(str.maketrans('','','b'))
'ac'
For tr -d
with python2.x use an additional argument to translate function:
>>> "abc".translate(None, 'b')
'ac'