Конкатенация строк в Python

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

Python String Concatenation

Мы можем выполнять конкатенацию строк следующими способами:

  • Использование оператора +
  • Использование метода join()
  • Использование оператора %
  • Использование функции format()
  • Использование f-строки (литеральная строковая интерполяция)

Конкатенация строк с использованием оператора +

Это самый простой способ строковой конкатенации. Давайте рассмотрим простой пример.

s1 = 'Apple'
s2 = 'Pie'
s3 = 'Sauce'

s4 = s1 + s2 + s3

print(s4)

Вывод: ApplePieSauce Рассмотрим еще один пример, в котором мы получим две строки от пользователя и объединим их.

s1 = input('Please enter the first string:\n')
s2 = input('Please enter the second string:\n')

print('Concatenated String =', s1 + s2)

Вывод:

Please enter the first string:
Hello
Please enter the second string:
World
Concatenated String = HelloWorld

Использование оператора + для конкатенации строк очень просто. Однако аргументы должны быть строками.

>>>'Hello' + 4
Traceback (most recent call last):
  File "<input>", line 1, in 
TypeError: can only concatenate str (not "int") to str

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

print('Hello' + str(4))


class Data:
    id = 0

    def __init__(self, i):
        self.id = i

    def __str__(self):
        return 'Data[' + str(self.id) + ']'


print('Hello ' + str(Data(10)))

Вывод:

Hello4
Hello Data[10]

Самая большая проблема с оператором + заключается в том, что мы не можем добавить какой-либо разделитель или разделитель между строками. Например, если нам нужно объединить “Привет” и “Мир” с пробелом в качестве разделителя, нам придется написать это как "Привет" + " " + "Мир".

Сцепление строк с помощью функции join()

Мы можем использовать функцию join(), чтобы объединить строки с разделителем. Это полезно, когда у нас есть последовательность строк, например, список или кортеж строк. Если вы не хотите разделителя, то используйте функцию join() с пустой строкой.

s1 = 'Hello'
s2 = 'World'

print('Concatenated String using join() =', "".join([s1, s2]))

print('Concatenated String using join() and whitespaces =', " ".join([s1, s2]))

Вывод:

Concatenated String using join() = HelloWorld
Concatenated String using join() and spaces = Hello World

Сцепление строк с использованием оператора %

Мы можем использовать оператор % для форматирования строк, он также может быть использован для конкатенации строк. Это полезно, когда нам нужно объединить строки и выполнить простое форматирование.

s1 = 'Hello'
s2 = 'World'

s3 = "%s %s" % (s1, s2)
print('String Concatenation using % Operator =', s3)

s3 = "%s %s from JournalDev - %d" % (s1, s2, 2018)
print('String Concatenation using % Operator with Formatting =', s3)

Output:

String Concatenation using % Operator = Hello World
String Concatenation using % Operator with Formatting = Hello World from JournalDev - 2018

Конкатенация строк с использованием функции format()

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

s1 = 'Hello'
s2 = 'World'

s3 = "{}-{}".format(s1, s2)
print('String Concatenation using format() =', s3)

s3 = "{in1} {in2}".format(in1=s1, in2=s2)
print('String Concatenation using format() =', s3)

Output:

String Concatenation using format() = Hello-World
String Concatenation using format() = Hello World

Функция format() в Python очень мощная, и использовать ее только для конкатенации строк – не ее правильное применение.

Конкатенация строк с использованием f-строк

Если вы используете Python 3.6+, вы также можете использовать f-строки для конкатенации строк. Это новый способ форматирования строк, введенный в PEP 498 – Литеральная строковая интерполяция.

s1 = 'Hello'
s2 = 'World'

s3 = f'{s1} {s2}'
print('String Concatenation using f-string =', s3)

name = 'Pankaj'
age = 34
d = Data(10)

print(f'{name} age is {age} and d={d}')

Output:

String Concatenation using f-string = Hello World
Pankaj age is 34 and d=Data[10]

F-строки в Python более чистые и легкие в написании по сравнению с функцией format(). Они также вызывают функцию str(), когда объект-аргумент используется как замена поля.

Заключение

Форматирование строк в Python можно выполнить несколькими способами. Используйте их в зависимости от ваших требований. Если вам нужно объединить последовательность строк с разделителем, то используйте функцию join(). Если к объединению также требуется форматирование, то используйте функцию format() или f-строки. Обратите внимание, что f-строки можно использовать с версии Python 3.6 и выше.

Вы можете ознакомиться с полным скриптом Python и другими примерами на Python в нашем репозитории на GitHub.

Source:
https://www.digitalocean.com/community/tutorials/python-string-concatenation