pythontrtransliteration

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

  • 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.