Skip to main content

Операции с подстроками в Python

Substring Operations in Python

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

Например, в строке "Hello, World!", подстроки "Hello", "World" и "!" являются подстроками исходной строки.

Давайте рассмотрим наиболее общие операции и методы, связанные с подстроками.

Срезы Строк

Срез строки - это процесс создания новой подстроки из существующей строки в Python. Вы можете срезать строку, используя синтаксис [start:end], чтобы извлечь часть строки, которая начинается с индекса start и заканчивается на индексе end (не включительно). Вот некоторые примеры:

my_string = "Hello, world!"

# Get the substring from index 0 to index 4 (not inclusive)
print(my_string[0:4])  # Output: "Hell"

# Get the substring from index 7 to the end of the string
print(my_string[7:])  # Output: "world!"

# Get the substring from index 2 to index 8 (not inclusive) with a step of 2
print(my_string[2:8:2])  # Output: "lo,"

# Get the substring from index 2 to the second-to-last character
print(my_string[2:-1])  # Output: "llo, world"

В первом примере мы используем срез для извлечения подстроки "Hell" из переменной my_string, указывая начальный индекс 0 и конечный индекс 4 (не включая).

Во втором примере мы используем срез для извлечения подстроки "world!" из переменной my_string, указывая только начальный индекс 7 и оставляя конечный индекс пустым. Это говорит Python извлечь подстроку от начального индекса до конца строки.

В третьем примере мы используем срез для извлечения каждого второго символа из подстроки "lo, ". Мы делаем это, указывая начальный индекс 2, конечный индекс 8 (не включая) и шаг 2.

В четвертом примере мы используем срез для извлечения подстроки "llo, world" из переменной my_string, указывая начальный индекс 2 и конечный индекс -1. -1 указывает на предпоследний символ в строке как на конечный индекс.

Чтобы разделить строку по разделителю, вы также можете использовать метод split(). Этот метод принимает один аргумент, который является символом или строкой разделителя, которые вы хотите использовать для разделения строки. Вот пример:

my_string = "Hello,world"
my_list = my_string.split(",")
print(my_list) # Output: ['Hello', 'world']

You can remove the first character from a string in Python using string slicing. Here's an example:

string = "hello"
new_string = string[1:]
print(new_string) # Output: ello

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

my_string = "Hello World!"
new_string = my_string[:-1]
print(new_string)  # Output: "Hello World"

Подстрока Строки

Чтобы проверить, содержит ли строка Python конкретную подстроку, вы можете использовать ключевое слово in или метод find().

Вот пример использования ключевого слова in:

my_string = "Hello, world!"
if "world" in my_string:
    print("Substring found!")
else:
    print("Substring not found.")
# Output: Substring found!

Вот пример использования метода find():

my_string = "Hello, world!"
if my_string.find("world") != -1:
    print("Substring found!")
else:
    print("Substring not found.")
# Output: Substring found!

В обоих примерах мы проверяем, присутствует ли подстрока "world" в строке my_string. Если подстрока найдена, мы печатаем "Substring found!", в противном случае мы печатаем "Substring not found.".

Реверс Строки

Существует несколько способов реверсирования строки в Python.

Давайте посмотрим, как реверсировать строку в python на примерах::

  • Используя срезы:
string = "hello"
reversed_string = string[::-1]
print(reversed_string)  # Output: "olleh"
  • Используя цикл:
string = "hello"
reversed_string = ""
for char in string:
    reversed_string = char + reversed_string
print(reversed_string)  # Output: "olleh"
  • Использование функции reversed():
string = "hello"
reversed_string = "".join(reversed(string))
print(reversed_string)  # Output: "olleh"

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

Методы startswith() и endswith()

В Python, startswith() и endswith() - это два метода строк, которые используются для проверки начинается или заканчивается ли строка с определенного префикса или суффикса соответственно. Вот обзор этих методов:

Метод startswith() используется для проверки начинается ли строка с определенного префикса. Метод принимает один или несколько префиксов в качестве аргумента и возвращает True, если строка начинается с любого из них, и False в противном случае. Вот синтаксис метода startswith():

string.startswith(prefix, start=0, end=len(string))

где:

  • prefix это префикс для проверки.
  • start это необязательный параметр, который указывает начальный индекс строки для поиска. По умолчанию, start установлен в 0, что означает, что будет искаться вся строка.
  • end это необязательный параметр, который указывает конечный индекс строки для поиска. По умолчанию, end установлен равным длине строки.

Вот пример использования метода startswith():

s = "Python is a great programming language"
print(s.startswith("Python"))  # True
print(s.startswith("Java"))    # False
print(s.startswith(("Java", "Python")))  # True (checking multiple prefixes)

Метод endswith() используется для проверки того, заканчивается ли строка конкретным суффиксом. Метод принимает один или несколько суффиксов в качестве аргумента и возвращает True, если строка заканчивается любым из них, и False в противном случае. Вот синтаксис метода endswith():

string.endswith(suffix, start=0, end=len(string))

где:

  • suffix это суффикс для проверки.
  • параметры start и end имеют такое же значение, как в методе startswith().

Вот пример использования метода endswith():

s = "Python is a great programming language"
print(s.endswith("language"))  # True
print(s.endswith("Python"))    # False
print(s.endswith(("Python", "language")))  # True (checking multiple suffixes)

В обоих методах вы можете передать кортеж префиксов или суффиксов, чтобы проверить несколько возможностей. Параметры start и end являются необязательными и могут быть использованы для поиска только части строки.

Метод split()

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

Вот пример:

s = "Hello World! How are you?"

words = s.split()

print(words)   # Output: ['Hello', 'World!', 'How', 'are', 'you?']

В приведенном выше примере метод split() вызывается для строки s, которая содержит слова, разделенные пробелами. Полученный список words содержит все слова из исходной строки как отдельные элементы.

Вы также можете указать другой разделитель, используя метод split(). Например:

s = "mango,pineapple,banana"

fruits = s.split(",")

print(fruits)   # Output: ['mango', 'pineapple', 'banana']

В этом примере метод split() вызывается для строки s, которая содержит имена фруктов, разделенные запятыми. Полученный список fruits содержит все имена фруктов как отдельные элементы, при этом в качестве разделителя используется запятая.

Функция string.find()

Это встроенная функция Python, которая возвращает индекс первого вхождения подстроки в данной строке. Если подстрока не найдена, она возвращает -1. Синтаксис использования string.find() выглядит следующим образом:

string.find(substring, start=0, end=len(string))

где string - строка для поиска, substring - строка, которую ищем, start - начальный индекс поиска (по умолчанию 0), а end - конечный индекс поиска (по умолчанию длина строки).

Вот пример:

sentence = "The quick brown fox jumps over the lazy dog"
print(sentence.find("fox"))   # Output: 16
print(sentence.find("cat"))   # Output: -1

В первой строке мы определяем строковую переменную sentence. Затем мы используем функцию find() для поиска подстроки "fox" в строке sentence. Поскольку "fox" находится на индексе 16 в строке sentence, функция find() возвращает 16. Во второй строке мы ищем подстроку "cat", которая не найдена в строке sentence, поэтому функция find() возвращает -1.

Метод replace()

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

Чтобы удалить определенный символ или подстроку из строки в Python, вы можете использовать метод replace() или срез строки.

Вот пример использования метода replace() для удаления определенного символа:

my_string = "Hello, World!"
new_string = my_string.replace("o", "")
print(new_string) # Output: Hell, Wrld!

Здесь мы заменили символ "o" на пустую строку, тем самым удалив его из исходной строки.

Усечение Строки

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

Вот пример:

text = "This is a long text that needs to be truncated."
max_length = 20
truncated_text = text[:max_length] + "..." if len(text) > max_length else text
print(truncated_text) # Output: This is a long text...

В этом примере мы сначала определяем строку text, которую хотим обрезать. Также мы указываем максимальную длину обрезанной строки, используя переменную max_length.

Затем мы используем срезы, чтобы получить первые символы строки max_length. Если длина исходной строки больше max_length, мы добавляем многоточие в конец обрезанной строки, используя конкатенацию строк. Если длина исходной строки меньше или равна max_length, мы просто присваиваем исходную строку переменной truncated_text.

В конце мы печатаем обрезанную строку, используя функцию print().

Метод count()

Вы можете использовать встроенный метод count() для подсчёта количества вхождений подстроки в строке.

Вот счётчик подстроки "is":

string = "Hello, world! This is a sample string."
substring = "is"

count = string.count(substring)

print(count) # Output: 2

В этом примере у нас есть строка "Hello, world! This is a sample string.", и мы хотим посчитать количество вхождений подстроки "is". Мы используем метод count для подсчета количества раз, когда подстрока встречается в строке.

Вывод этой программы будет 2, потому что подстрока "is" встречается дважды в строке.

Пишите вместе с нами!

Вы можете внести свой вклад в статьи о Python на GitHub: создайте Fork, внесите правки и отправьте нам Pull request.

Profile picture for user almargit
Python developer, content manager.
Profile picture for user AliaksandrSumich
Aliaksandr Sumichредактор
Обновлено: 03/28/2024 - 22:40
Profile picture for user angarsky
Evgeniy Melnikovрецензент
Проверено и опубликовано