DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

translate in Python

Buy Me a Coffee

*Memo for a string and byte string(bytes and bytearray) functions:

*Memo for a string and byte string(bytes and bytearray):

str.translate() and bytes.translate() or bytearray.translate() can translate the string and byte string respectively with the dictionary created by str.maketrans() and the byte string created by bytes.maketrans() or bytearray.translate() respectively as shown below:

*Memo for str.translate():

  • The 1st argument is table(Required-Type:dict):
    • A dictionary should be created with str.maketrans().
    • Don't use table=.

*Memo for bytes.translate() and bytearray.translate():

  • The 1st argument is table(Required-Type:Bytes-like object):
    • A byte string should be created with bytes.maketrans().
    • Don't use table=.
  • The 2nd argument is delete(Optional-Default:b""-Type:Bytes-like object):
    • It's the zero or more bytes to detele.
  • The one or more bytes of delete is prioritized for deletion rather than replacement.

<String>:

<str.maketrans() with one argument>:

table = str.maketrans({
    'a': 'x',
    'b': 'y',
    'c': 'z',
    '1':'one',
    '2':'two',
    '3':'three',
    ' ': '    ',
    'd': '',
    'e': '',
    'f': '',
    'g': '',
    'h': ''
})

print('AaBbCc'.translate(table))     # AxByCz
print('1 2 3'.translate(table))      # one    two    three
print('DdEeFfGgHh'.translate(table)) # DEFGH

print(''.translate(table))
print(' '.translate(table))
# Nothing
Enter fullscreen mode Exit fullscreen mode

*The below is equivalent to the above.

table = {
    'a': 'x',
    'b': 'y',
    'c': 'z',
    '1':'one',
    '2':'two',
    '3':'three',
    ' ': '    ',
    'd': '',
    'e': '',
    'f': '',
    'g': '',
    'h': ''
}

print(''.join(table.get(c, c) for c in 'AaBbCc'))     # AxByCz
print(''.join(table.get(c, c) for c in '1 2 3'))      # one    two    three
print(''.join(table.get(c, c) for c in 'DdEeFfGgHh')) # DEFGH

print(''.join(table.get(c, c) for c in ''))
print(''.join(table.get(c, c) for c in ' '))
# Nothing
Enter fullscreen mode Exit fullscreen mode

<str.maketrans() with two arguments>:

table = str.maketrans('abc', 'xyz')

print('AaBbCc'.translate(table))     # AxByCz
print('DdEeFfGgHh'.translate(table)) # DdEeFfGgHh

print(''.translate(table))
print(' '.translate(table))
# Nothing
Enter fullscreen mode Exit fullscreen mode
table = str.maketrans('', '')

print('AaBbCc'.translate(table))     # AaBbCc
print('DdEeFfGgHh'.translate(table)) # DdEeFfGgHh

print(''.translate(table))
print(' '.translate(table))
# Nothing
Enter fullscreen mode Exit fullscreen mode

<str.maketrans() with three arguments>:

table = str.maketrans('abc', 'xyz', 'defgh')

print('AaBbCc'.translate(table))     # AxByCz
print('DdEeFfGgHh'.translate(table)) # DEFGH

print(''.translate(table))
print(' '.translate(table))
# Nothing
Enter fullscreen mode Exit fullscreen mode
table = str.maketrans('abc', 'xyz', 'abcdefgh')

print('AaBbCc'.translate(table))     # ABC
print('DdEeFfGgHh'.translate(table)) # DEFGH
Enter fullscreen mode Exit fullscreen mode
table = str.maketrans('', '', '')

print('AaBbCc'.translate(table))     # AaBbCc
print('DdEeFfGgHh'.translate(table)) # DdEeFfGgHh

print(''.translate(table))
print(' '.translate(table))
# Nothing
Enter fullscreen mode Exit fullscreen mode

<Byte String>:

<bytes.translate() & bytearray.translate() without delete>:

table = bytes.maketrans(b'abc', b'xyz')
table = bytes.maketrans(bytearray(b'abc'), bytearray(b'xyz'))
table = bytearray.maketrans(b'abc', b'xyz')
table = bytearray.maketrans(bytearray(b'abc'), bytearray(b'xyz'))

print(b'AaBbCc'.translate(table))
# b'AxByCz'

print(bytearray(b'AaBbCc').translate(table))
# bytearray(b'AxByCz')

print(b'DdEeFfGgHh'.translate(table))
# b'DdEeFfGgHh'

print(bytearray(b'DdEeFfGgHh').translate(table))
# bytearray(b'DdEeFfGgHh')

print(b''.translate(table))
# b''

print(bytearray(b'').translate(table))
# bytearray(b'')

print(b' '.translate(table))
# b' '

print(bytearray(b' ').translate(table))
# bytearray(b' ')
Enter fullscreen mode Exit fullscreen mode
table = bytes.maketrans(b'', b'')
table = bytes.maketrans(bytearray(b''), bytearray(b''))
table = bytearray.maketrans(b'', b'')
table = bytearray.maketrans(bytearray(b''), bytearray(b''))

print(b'AaBbCc'.translate(table))
# b'AaBbCc'

print(bytearray(b'AaBbCc').translate(table))
# bytearray(b'AaBbCc')

print(b'DdEeFfGgHh'.translate(table))
# b'DdEeFfGgHh'

print(bytearray(b'DdEeFfGgHh').translate(table))
# bytearray(b'DdEeFfGgHh')

print(b''.translate(table))
# b''

print(bytearray(b'').translate(table))
# bytearray(b'')

print(b' '.translate(table))
# b' '

print(bytearray(b' ').translate(table))
# bytearray(b' ')
Enter fullscreen mode Exit fullscreen mode

<bytes.translate() & bytearray.translate() with delete>:

table = bytes.maketrans(b'abc', b'xyz')
table = bytes.maketrans(bytearray(b'abc'), bytearray(b'xyz'))
table = bytearray.maketrans(b'abc', b'xyz')
table = bytearray.maketrans(bytearray(b'abc'), bytearray(b'xyz'))
d1 = b'defgh'
d2 = b'abcdefgh'

print(b'AaBbCc'.translate(table, delete=d1))
# b'AxByCz'

print(bytearray(b'AaBbCc').translate(table, delete=d1))
# bytearray(b'AxByCz')

print(b'AaBbCc'.translate(table, delete=d2))
# b'ABC'

print(bytearray(b'AaBbCc').translate(table, delete=d2))
# bytearray(b'ABC')

print(b'DdEeFfGgHh'.translate(table, delete=d1))
print(b'DdEeFfGgHh'.translate(table, delete=d2))
# b'DEFGH'

print(bytearray(b'DdEeFfGgHh').translate(table, delete=d1))
print(bytearray(b'DdEeFfGgHh').translate(table, delete=d2))
# bytearray(b'DEFGH')

print(b''.translate(table, delete=d1))
print(b''.translate(table, delete=d2))
# b''

print(bytearray(b'').translate(table, delete=d1))
print(bytearray(b'').translate(table, delete=d2))
# bytearray(b'')

print(b' '.translate(table, delete=d1))
print(b' '.translate(table, delete=d2))
# b' '

print(bytearray(b' ').translate(table, delete=d1))
print(bytearray(b' ').translate(table, delete=d2))
# bytearray(b' ')
Enter fullscreen mode Exit fullscreen mode
table = bytes.maketrans(b'', b'')
table = bytes.maketrans(bytearray(b''), bytearray(b''))
table = bytearray.maketrans(b'', b'')
table = bytearray.maketrans(bytearray(b''), bytearray(b''))
d1 = b'defgh'
d2 = b'abcdefgh'

print(b'AaBbCc'.translate(table, delete=d1))
# b'AaBbCc'

print(bytearray(b'AaBbCc').translate(table, delete=d1))
# bytearray(b'AaBbCc')

print(b'AaBbCc'.translate(table, delete=d2))
# b'ABC'

print(bytearray(b'AaBbCc').translate(table, delete=d2))
# bytearray(b'ABC')

print(b'DdEeFfGgHh'.translate(table, delete=d1))
print(b'DdEeFfGgHh'.translate(table, delete=d2))
# b'DEFGH'

print(bytearray(b'DdEeFfGgHh').translate(table, delete=d1))
print(bytearray(b'DdEeFfGgHh').translate(table, delete=d2))
# bytearray(b'DEFGH')

print(b''.translate(table, delete=d1))
print(b''.translate(table, delete=d2))
# b''

print(bytearray(b'').translate(table, delete=d1))
print(bytearray(b'').translate(table, delete=d2))
# bytearray(b'')

print(b' '.translate(table, delete=d1))
print(b' '.translate(table, delete=d2))
# b' '

print(bytearray(b' ').translate(table, delete=d1))
print(bytearray(b' ').translate(table, delete=d2))
# bytearray(b' ')
Enter fullscreen mode Exit fullscreen mode

Top comments (0)