Введение
Конкатенация строк — очень распространённая операция в программировании. В Python конкатенацию строк можно выполнить различными способами. Цель данного руководства — рассмотреть различные способы конкатенации строк в программе на Python.
Конкатенация строк с помощью оператора +
Это самый простой способ объединения строк. Давайте рассмотрим простой пример.
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]Самая большая проблема с оператором “+” заключается в том, что мы не можем добавлять разделители между строками. Например, если нам нужно объединить “Hello” и «World» с помощью пробела в качестве разделителя, нужно записать это так: ""Привет" + " " + "Мир"" Давайте напишем.
Объединение строк с помощью функции 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)Выход:
String Concatenation using % Operator = Hello World
String Concatenation using % Operator with Formatting = Hello World from JournalDev - 2018Объединение строк с помощью функции format()
Мы также можем использовать функцию string 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)Выход:
String Concatenation using format() = Hello-World
String Concatenation using format() = Hello WorldФункция Python String format() очень мощная, использовать ее только для объединения строк — неправильное ее применение.
Конкатенация строк с использованием строки f
Если вы используете Python 3.6+, вы также можете использовать f-string для конкатенации строк. Это новый способ форматирования строк, представленный в PEP 498 – Literal String Interpolation.
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}')Выход:
String Concatenation using f-string = Hello World
Pankaj age is 34 and d=Data[10]Строка f в Python понятнее и проще в написании, чем функция format(). Она также вызывает функцию str(), когда аргумент-объект используется для замены поля.
Результат
Форматирование строк в Python можно реализовать различными способами. Используйте их по мере необходимости. Если вам нужно объединить последовательность строк с разделителем, используйте функцию join(). Если при конкатенации требуется форматирование, используйте функцию format() или функцию f-string. Обратите внимание, что f-string можно использовать в Python версии 3.6 и более поздних.









