Методы строки str.maketrans() и str.translate() в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

В этом уроке по основам Python, мы рассмотрим строковый метод str.maketrans() и str.translate(). В первом методе мы получаем таблицу, во втором методе мы используем ее для сопоставления перевода. 

Синтаксис метода str.maketrans():

str.maketrans(x[, y[, z])

Аргументы:

  • str - строка в которой нужно сделать перевод.
  • x - если указан только один аргумент, это должен быть словарь. Он должен содержать преобразование 1 к 1 одной символьной строки или число Unicode в его перевод. 
  • y - если заданы два аргумента, они должны быть двумя строками одинаковой длины. Каждый символ в первой строке является заменой соответствующего индекса во второй строке. (Необязательно)
  • z — если заданы три аргумента, каждый символ в третьем аргументе сопоставляется с None. (Необязательно)

Метод возвращает таблицу перевода с сопоставлением 1-к-1 порядкового номера Unicode с его переводом/заменой.

Пример:

# Определяем словарь
example_dict = {'h': 12, 'e': 34, 'l': 56, 'l': 78, 'o': 910}

# Определяем строку для сопоставления 
string_example = 'hello'

# Выводим результат
print(string_example.maketrans(example_dict))

Результат:

>>> {104: 12, 101: 34, 108: 78, 111: 910}

Функция создает сопоставление порядкового номера символа Unicode с соответствующим переводом.

Помимо этого, если в словаре появятся два или более символа, будет вызвано исключение.

Пример с двумя строками:

# Определяем строки
first_string = 'hello'
second_string = 'world'

# Определяем строку для сопоставления 
string_example = 'hello'

# Выводим результат
print(string_example.maketrans(first_string, second_string))

# Определяем строки
first_string = 'hello'
second_string = 'brother'

# Определяем строку для сопоставления 
string_example = 'hello'

# Выводим результат
print(string_example.maketrans(first_string, second_string))

Результат:

>>> {104: 119, 101: 111, 108: 108, 111: 100}

>>> Traceback (most recent call last):
>>>   File "C:\Users\Razilator\Desktop\Projects\Coding\articles\methods\str_maketrans\main.py", line 20, in <module>
>>>     print(string_example.maketrans(first_string, second_string))
>>> ValueError: the first two maketrans arguments must have equal length

В начале определяются две строки одинаковой длины hello и world. Создается соответствующий перевод. Печать только первого перевода приводит к порядковому совпадению каждого символа Unicode в first_string и того же индексированного символа в second_string.

При создании таблицы перевода для строк разной длины мы получаем исключение ValueError

Пример с тремя аргументами (со съёмной строкой):

# Определяем строки
first_string = 'hello'
second_string = 'world'
third_string = 'hostel'

# Определяем строку для сопоставления 
string_example = 'hello'

# Выводим результат
print(string_example.maketrans(first_string, second_string, third_string))

Результат:

>>> {104: None, 101: None, 108: None, 111: None, 115: None, 116: None}

Cоздается сопоставление между двумя строками first_string и second_string. После этого, третий аргумент функции third_string сбрасывает отображение каждого символа в ней на None, а также создает новое сопоставление для несуществующих символов.

Синтаксис метода str.translate():

str.translate(table)

Аргументы:

  • str - строка, в которой нужно сопоставить символы.
  • table - таблица перевода, содержащая сопоставление между двумя символами;

Метод str.translate() возвращает строку, в которой каждый символ соответствует соответствующему символу в таблице перевода. 

Данный метод использует таблицу перевода для замены/перевода символов в заданной строке в соответствии с таблицей сопоставления. Таблица перевода создается методом str.maketrans().

Пример с использованием таблицы перевода:

# Определяем строки
first_string = 'hello'
second_string = 'world'
third_string = 'ld'

# Определяем строку для сопоставления 
string_example = 'hello'

# Выводим заданную строку
print('Оригинальная строка:', string_example)

# Создаем таблицу сопоставления
translation = string_example.maketrans(first_string, second_string, third_string)

# Выводим результат
print('Строка перевода:', string_example.translate(translation))

Результат:

>>> Оригинальная строка: hello
>>> Строка перевода: wod

Пример с заданной таблицей (создаем словарь вручную):

# Определяем строку для сопоставления 
string_example = 'hello'

# Выводим заданную строку
print('Оригинальная строка:', string_example)

# Создаем таблицу сопоставления
translation = {104: 104, 101: 97, 108: 105}

# Выводим результат
print('Строка перевода:', string_example.translate(translation))

Результат:

>>> Оригинальная строка: hello
>>> Строка перевода: haiio
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)