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 улучшены сообщения об ошибках при неверных типах аргументов.
Расширенные примеры
Фильтрация списка строк
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
text = 'abcdef'
print(text.startswith('ef', -2))True
Использование в условных операторах
url = 'https://example.com'
if url.startswith(('http://', 'https://')):
print('Валидный URL')
else:
print('Невалидный протокол')Валидный URL
Обработка пользовательского ввода
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