Преобразование кортежа в строку в Python [с примерами]

В этом уроке вы увидите, как преобразовать кортеж в строку в Python. Мы рассмотрим несколько примеров, которые вы найдете полезными для своих приложений.

Учитывая кортеж строк, самый простой способ преобразовать этот кортеж в одну строку в Python — использовать метод string join(). Этот метод генерирует строку путем объединения строк в кортеже. Это отлично работает, если элементы кортежа являются строками; если это не так, обязательно сначала преобразуйте их в строки.

Мы начнем с простого примера, а затем рассмотрим различные сценарии, с которыми вы также можете столкнуться в своих программах на Python.

Преобразование кортежа Python в строку и обратно

Допустим, у вас есть следующий кортеж строк:

>>> codefather = ('c','o','d','e','f','a','t','h','e','r')

Чтобы преобразовать кортеж строк в одну строку, вы можете использовать метод соединения строк, который объединяет строки в итерацию для создания одной строки.

>>> ''.join(codefather)
'codefather' 

Как видите, мы применили метод join() к пустой строке, которая действует как разделитель между каждым символом в конечной строке.

В данном случае наша итерация представляет собой кортеж, но также может быть списком или набором.

Чтобы преобразовать эту строку обратно в кортеж, вам необходимо разделить строку на кортеж символов. Для этого вы можете использовать тип последовательности tuple().

>>> codefather = 'codefather'
>>> tuple(codefather)
('c', 'o', 'd', 'e', 'f', 'a', 't', 'h', 'e', 'r') 

Попробуйте, используя оболочку Python на своем компьютере.

Преобразование кортежа Python в строку с разделителем-запятой

В некоторых сценариях при преобразовании кортежа в строку может потребоваться использовать запятую в качестве разделителя.

Например, возьмем кортеж, содержащий названия планет:

>>> planets = ('earth','mars','saturn','jupiter')

Если вы используете метод join() так же, как мы это делали в предыдущем разделе, вы получите следующую строку:

>>> ''.join(planets)
'earthmarssaturnjupiter' 

Чтобы окончательную строку можно было прочитать, добавьте запятую между каждой строкой в ​​кортеже. Мы будем использовать запятую в качестве разделителя метода join() (в предыдущем примере разделителем была пустая строка).

>>> ','.join(planets)
'earth,mars,saturn,jupiter' 

Для более чистого кода вы также можете сохранить разделитель в переменной, это может быть удобно, если вы захотите изменить разделитель позже.

>>> separator = ','
>>> separator.join(planets)
'earth,mars,saturn,jupiter' 

Примечание. Этот метод применим к любому символу-разделителю, который вы хотите использовать.

Преобразование кортежа, содержащего числа, в строку

Давайте посмотрим, что произойдет, если мы применим метод join() к кортежу, содержащему смесь строк и целых чисел:

>>> values = ('radius', 34)
>>> ''.join(values)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: sequence item 1: expected str instance, int found 

Ошибка «элемент последовательности 1: ожидаемый экземпляр str, найдено int» сообщает нам, что элемент кортежа, идентифицируемый индексом 1, должен быть строкой, но вместо этого это целое число.

Официальная документация Python для метода join() подтверждает, что ошибка TypeError возникает, если итерируемый объект содержит какие-либо нестроковые значения (например, целые числа):

Метод соединения Python

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

>>> values = ('radius', 34)
>>> separator = ','
>>> separator.join([str(value) for value in values])
'radius,34' 

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

Чтобы понять, как это работает, если вы не знакомы с генераторами списков, вы можете увидеть вывод ниже, показывающий, что возвращает генератор списков:

>>> [str(value) for value in values]
['radius', '34'] 

Та же ошибка возникает, если кортеж содержит числа с плавающей запятой:

>>> values = (3.14, 5.67, 7.89)
>>> ''.join(values)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, float found 

Вы получаете исключение при попытке напрямую использовать метод join(). В качестве альтернативы вы можете использовать то же понимание списка, которое мы использовали ранее.

>>> separator = ','
>>> separator.join([str(value) for value in values])
'3.14,5.67,7.89' 

Использование функции Map() для преобразования кортежа чисел в строку

Давайте посмотрим, как можно использовать функцию map() для преобразования кортежа чисел в строку вместо использования понимания списка (как показано в предыдущем разделе).

Вот синтаксис функции map():

Функция карты Python()

Если вы передадите функцию str в качестве первого аргумента и кортеж в качестве второго аргумента, вы получите следующий результат:

>>> values = (3.14, 5.67, 7.89)
>>> map(str, values)
<map object at 0x101125970> 

Вы можете передать этот объект карты в тип последовательности tuple(), чтобы получить кортеж:

>>> tuple(map(str, values))
('3.14', '5.67', '7.89') 

Обратите внимание, что на этот раз каждый элемент кортежа является строкой, а не числом с плавающей запятой.

Теперь давайте воспользуемся функцией map() вместе с функцией join(), чтобы создать строку из нашего кортежа чисел.

>>> ' '.join(map(str, values))
'3.14 5.67 7.89' 

И вуаля, вот и последняя строка! 🙂

Заключение

Мы рассмотрели несколько различных способов преобразования кортежа Python в строку.

Теперь вы знаете, как использовать метод string join(), функцию map() и списковое включение, чтобы создать наилучшую реализацию, которую вы хотите.

Какой подход вы предпочитаете среди тех, которые мы видели?