Startswith: примеры (PYTHON)

Функция startswith в Python: примеры и практическое применение
Раздел: Строки, Поиск в строках
startswith(prefix[, start[, end]]): bool

Функция startswith в Python

Метод str.startswith() применяется для проверки, начинается ли строка с указанного префикса. Этот метод часто используется при валидации ввода, обработке текстовых данных, фильтрации и анализе строк.

Аргументы функции

Функция принимает до трёх параметров:

  • prefix (обязательный) – строка или кортеж строк для проверки начала исходной строки.
  • start (необязательный) – индекс, с которого начинается проверка (по умолчанию 0).
  • end (необязательный) – индекс, на котором заканчивается проверка (по умолчанию конец строки).

Возвращаемое значение

Метод возвращает True, если строка начинается с указанного префикса в заданных границах, иначе False. При передаче кортежа префиксов возвращает True, если строка начинается с любого из элементов кортежа.

Примеры использования startswith

Базовый пример

text = 'Привет, мир!'
print(text.startswith('Привет'))
True

С параметрами start и end

text = 'Python programming'
print(text.startswith('prog', 7))
print(text.startswith('Py', 0, 6))
True
True

Проверка нескольких префиксов

filename = 'data2023.xlsx'
print(filename.startswith(('data', 'table', 'report')))
True

Альтернативные функции Python

Метод str.endswith()

Проверяет окончание строки, имеет аналогичные параметры. Используется для проверки расширений файлов или суффиксов.

Регулярные выражения (re.match)

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

Оператор in и срезы

Для простых проверок можно использовать text[:len(prefix)] == prefix или prefix in text, но это менее читаемо и не поддерживает кортежи префиксов.

Распространенные ошибки

Передача нестроковых аргументов

text = 'Test'
text.startswith(123)
TypeError: startswith first arg must be str or a tuple of str, not int

Неправильный порядок аргументов

text = 'Sample'
print(text.startswith(0, 'S'))
TypeError: startswith first arg must be str or a tuple of str, not int

Пустой префикс

text = 'Anything'
print(text.startswith(''))
True

История изменений

В Python 3.9 добавлена поддержка кортежей в параметрах start и end. В версии 3.10 улучшены сообщения об ошибках при неверных типах аргументов.

Расширенные примеры

Фильтрация списка строк

Пример python
files = ['img1.jpg', 'data.csv', 'img2.png', 'script.py']
images = [f for f in files if f.startswith(('img', 'photo', 'pic'))]
print(images)
['img1.jpg', 'img2.png']

Проверка с отрицательным start

Пример python
text = 'abcdef'
print(text.startswith('ef', -2))
True

Использование в условных операторах

Пример python
url = 'https://example.com'
if url.startswith(('http://', 'https://')):
    print('Валидный URL')
else:
    print('Невалидный протокол')
Валидный URL

Обработка пользовательского ввода

Пример python
command = '/help сегодня'
if command.startswith('/help'):
    topic = command[6:] if len(command) > 6 else 'общий'
    print(f'Раздел помощи: {topic}')
Раздел помощи: сегодня

Аналоги функции в других языках

JavaScript

let text = 'Hello World';
console.log(text.startsWith('Hello'));
true

Java

String text = "Java programming";
boolean result = text.startsWith("Java");
true

PHP

$text = 'PHP tutorial';
$result = str_starts_with($text, 'PHP');
bool(true)

C#

string text = "CSharp";
bool result = text.StartsWith("C");
True

Golang

package main
import "strings"
func main() {
    result := strings.HasPrefix("GoLang", "Go")
}
true

питон startswith function comments

En
Startswith Check if string starts with prefix