Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

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

Роман Андреев
Роман Андреев
Технический писатель
07 июня 2023 г.
12873
4 минуты чтения
Средний рейтинг статьи: 5

Конкатенация строк в Python — это операция соединения двух или более строк в одну. В результате конкатенации создается новая строка, которая содержит все символы из исходных, расположенные в нужном порядке. Пример: если у нас есть две строки Hello и world!, то конкатенация этих строк даст новую строку Hello world! В Python, как и во многих других языках программирования, для конкатенации строк используются разные способы. Рассмотрим их все.

Оператор +

Возьмем классический пример:

string1 = "Hello"
string2 = "world!"
string3 = string1 + ", " + string2
print(string3)

Hello, world!

Здесь мы присвоили строке string1 значение Hello, а строке string2 значение world!, а затем сложили их, добавив запятую с пробелом в середине, и вывели на экран новую строку.

Приведем еще пару примеров конкатенации с помощью оператора +. Вот конкатенация трех строк:

string1 = "I"
string2 = "love"
string3 = "Python"
result = string1 + " " + string2 + " " + string3
print(result)

I love Python

Как видим, никаких отличий. И такой пример:

first_name = "Monty"
last_name = "Python"
result = "My name is " + first_name + " " + last_name
print(result)

My name is Monty Python

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

Метод join()

В примерах выше мы использовали оператор + для соединения двух или более строк. Но также конкатенация строк в Python 3 может быть выполнена и при помощи метода join(). Вот наш первый пример, записанный таким способом:

strings = ["Hello", "world!"]
string3 = ", ".join(strings)
print(string3)

И в выводе мы увидим всё тот же Hello, world!.

А вот и два других примера, переписанные с использованием метода join():

strings = ["I", "love", "Python"]
result = " ".join(strings)
print(result)

I love Python
first_name = "Monty"
last_name = "Python"
strings = ["My name is", first_name, last_name]
result = " ".join(strings)
print(result)

My name is Monty Python

Обратите внимание, что в обоих примерах мы создали список строк и затем использовали метод join() для их соединения в одну строку. В первом примере мы только добавили пробел для разделения слов, а во втором еще и задействовали переменные в списке.

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

Если мы просто попытаемся соединить строку и число, то получим ошибку:

age = 28
message = "I am " + age + " years old."
print(message)

Traceback (most recent call last):
  File "C:/Python/Python38/concat1.py", line 2, in <module>
    message = "I am " + age + " years old."
TypeError: can only concatenate str (not "int") to str

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

Конкатенация строки и числа через str()

Чтобы исправить эту ошибку, мы можем использовать функцию str() для преобразования числа в строку. Вот пример правильной конкатенации строки и числа:

age = 28
message = "I am " + str(age) + " years old."
print(message)

I am 28 years old.

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

Конкатенация строки и числа через format()

То же самое можно сделать, и используя метод format():

age = 28
message = "I am {} years old.".format(age)
print(message)

I am 28 years old.

Этот метод работает так же, как и функция str(), различается лишь синтаксис.

Конкатенация строки и числа через f-строки

И еще один способ вывести такой же результат: задействовать новинку версии 3 — f-строки:

age = 28
message = f"I am {age} years old."
print(message)

I am 28 years old.

f-строки (formatted string literals) в Python действуют так же, как и метод str.format(), но предоставляют более удобный и лаконичный способ переноса значений в строку. С помощью f-строк мы можем вставлять значения переменных прямо внутрь строки, используя фигурные скобки {} и указывая имя переменной внутри этих скобок. Вот еще несколько примеров конкатенации строк и чисел с использованием f-строк:

name = "Monty"
age = 35
print(f"My name is {name} and I am {age} years old.")

My name is Monty and I am 35 years old.
salary = 100000
tax_rate = 0.25
taxes = salary * tax_rate
print(f"My salary is {salary} and my taxes are {taxes}.")

My salary is 100000 and my taxes are 25000.0.

Как видите, мы можем вставлять значения переменных внутрь строки, используя фигурные скобки, и Python автоматически подставляет значения переменных в эти места при выполнении программы. Обратите внимание, что f-строки поддерживают также различные форматы вывода, которые можно указать внутри фигурных скобок. Например, можно указать количество знаков после запятой для чисел с плавающей запятой (или точкой). Это делает f-строки ещё более мощными средствами форматирования.

Заключение

На примере конкатенации мы в очередной раз убедились, насколько гибким является Python, ведь соединять строки здесь можно разными методами. И даже соединение строки с числом путем преобразования числового значения в строчное можно выполнить как минимум тремя способами: просто выберите понравившийся.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону