- Конкатенация строк в Python
- Конкатенация строк с использованием оператора +
- Конкатенация строк в Python с использованием функции join()
- Конкатенация с использованием оператора%
- С использованием функции format()
- С использованием f-строки
- Заключение
- Строки. Функции и методы строк
- Базовые операции
- Таблица «Функции и методы строк»
Конкатенация строк в Python
Объединение строк – очень распространенная операция в программировании. Объединение строк в Python может быть выполнено различными способами.
Мы можем выполнить конкатенацию строк следующими способами:
- использование оператора+;
- использование метода join();
- использование оператора%;
- использование функции format();
- Использование f-строки (интерполяция буквальной строки).
Конкатенация строк с использованием оператора +
Это самый простой способ конкатенации строк. Давайте посмотрим на простой пример.
s1 = 'Apple' s2 = 'Pie' s3 = 'Sauce' s4 = s1 + s2 + s3 print(s4)
Давайте посмотрим на другой пример, где мы получим две строки из пользовательского ввода и объединим их.
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 "", line 1, in TypeError: can only concatenate str (not "int") to str
Мы можем использовать функцию str(), чтобы получить строковое представление объекта.
Давайте посмотрим, как связать строку с целым числом или другим объектом.
print('Hello' + str(4)) class Data: def __init__(self, i): self.id = i def __str__(self): return 'Data[' + str(self.id) + ']' print('Hello ' + str(Data(10)))
Самая большая проблема с оператором + заключается в том, что мы не можем добавить разделитель или разделитель между строками. Например, если нам нужно объединить «Hello» и «World» с разделителем пробелов, нам нужно будет записать его как «Hello» + «» + «World».
Конкатенация строк в Python с использованием функции 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 = " ".format(in1=s1, in2=s2) print('String Concatenation using format() =', s3)
String Concatenation using format() = Hello-World String Concatenation using format() = Hello World
Функция format() очень мощная, использование ее только для конкатенации строк – неправильное использование.
С использованием f-строки
Если вы используете Python 3.6+, вы также можете использовать f-строку для конкатенации строк. Это новый способ форматирования строк, представленный в PEP 498 – Literal String Interpolation.
s1 = 'Hello' s2 = 'World' s3 = f' ' print('String Concatenation using f-string =', s3) name = 'Pankaj' age = 34 d = Data(10) print(f' age is and d=')
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 относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.
: Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
Таблица «Функции и методы строк»
Функция или метод | Назначение |
---|---|
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» | Литералы строк |
S = «s\np\ta\nbbb» | Экранированные последовательности |
S = r»C:\temp\new» | Неформатированные строки (подавляют экранирование) |
S = b»byte» | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S[i] | Обращение по индексу |
S[i:j:step] | Извлечение среза |
len(S) | Длина строки |
S.find(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S.rfind(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
S.index(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
S.rindex(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена[, maxcount]) | Замена шаблона на замену. maxcount ограничивает количество замен |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S.isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S.center(width, [fill]) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip([chars]) | Удаление пробельных символов в начале строки |
S.rstrip([chars]) | Удаление пробельных символов в конце строки |
S.strip([chars]) | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S.format(*args, **kwargs) | Форматирование строки |
Для вставки кода на Python в комментарий заключайте его в теги