I\'m a Python newbie.
How come this doesn\'t work in Python 3.1?
from string import maketrans # Required to call maketrans function.
intab = \"aei
If you absolutely insist on working with 8-bit bytes:
>>> intab = b"aeiou"
>>> outtab = b"12345"
>>> trantab = bytes.maketrans(intab, outtab)
>>> strg = b"this is string example....wow!!!";
>>> print(strg.translate(trantab));
b'th3s 3s str3ng 2x1mpl2....w4w!!!'
>>>
Stop trying to learn Python 3 by reading Python 2 documentation.
intab = 'aeiou'
outtab = '12345'
s = 'this is string example....wow!!!'
print(s.translate({ord(x): y for (x, y) in zip(intab, outtab)}))
Here's my final Python (3.1) code posted here just for reference:
"this is string example....wow!!!".translate(bytes.maketrans(b"aeiou",b"12345"))
Short and sweet, love it.
Hey here is the simple one liner which worked perfectly for me
import string
a = "Learning Tranlate() Methods"
print (a.translate(bytes.maketrans(b"aeiou", b"12345")))*
OUTPUT ::::
L21rn3ng Tr1nl1t2() M2th4ds
You don't need to use bytes.maketrans()
when str
would be simpler and eliminate the need for the 'b' prefix:
print("Swap vowels for numbers.".translate(str.maketrans('aeiou', '12345')))
"this is string example....wow!!!".translate(str.maketrans("aeiou","12345"))
This works, and no additional byte transformation. I don't know the reason why to use byte instead of str.