What does "table" in the string.translate function mean?
python, python-2.7, string
Solution
It depends on Python version you are using.
In Python 2.x. The table is 256-characters string. It can be created using `string.maketrans`:
>>> import string
>>> tbl = string.maketrans('ac', 'dx')
>>> "abcabc".translate(tbl)
'dbxdbx'
In Python 3.x, the table is mapping of unicode ordinals to unicode characters.
>>> "abcabc".translate({ord('a'): 'd', ord('c'): 'x'})
'dbxdbx'
Problem
Going through the `string.translate` function which says: Delete all characters from s that are in deletechars (if present), and then translate the characters using table, which must be a 256-character string giving the translation for each character value, indexed by its ordinal. If table is None, then only the character deletion step is performed. - What does table mean here? Can it be a `dict` containing the mapping? - What does "must be a 256-character string" mean? - Can the table be made manually or through a custom function instead of `string.maketrans`? I tried using the function (attempts below) just to see how it worked but wasn't successfully able to use it. ``` >>> "abcabc".translate("abcabc",{ord("a"): "d", ord("c"): "x"}) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: translation table must be 256 characters long ``` ``` >>> "abcabc".translate({ord("a"): ord("d"), ord("c"): ord("x")}, "b") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: expected a character buffer object ``` ``` >>> "abc".translate({"a": "d", "c": "x"}, ["b"]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: expected a character buffer object ``` What am I missing here?