# Python String startswith: Проверка, начинается ли строка с подстроки

Метод `startswith` в Python используется для проверки, начинается ли строка с определенной подстроки. В этом руководстве **вы узнаете, как использовать функцию `startswith` в Python для проверки, начинается ли строка с одной или нескольких подстрок**. Умение проверять, начинается ли строка с другой строки, — это полезный способ проверки ввода пользователей, например, номеров телефонов или имен. Альтернативно, вы можете использовать метод `startswith`, чтобы проверить, заканчивается ли строка подстрокой

К концу этого урока вы узнаете:

* Как использовать функцию Python `startswith()`, чтобы проверить, начинается ли строка с подстроки
* Как использовать функцию Python `startswith()` функция с несколькими строками
* Как использовать функцию Python `startswith()` функция без учета регистра.
* Как использовать функцию Python `startswith()` функция  с списком строк

Оглавление

* [Понимание Python начинается с функции](#ponimanie-python-nachinaetsya-s-funkcii)
* [Использование Python начинается с проверки, начинается ли строка с подстроки](#ispolzovanie-python-nachinaetsya-s-proverki-nachinaetsya-li-stroka-s-podstroki)
* [Использование Python начинается с проверки того, начинается ли строка с нескольких подстрок](#ispolzovanie-python-nachinaetsya-s-proverki-togo-nachinaetsya-li-stroka-s-neskolkikh-podstrok)
* [Использование Python начинается с проверки того, начинается ли строка с подстроки, нечувствительной к регистру](#ispolzovanie-python-nachinaetsya-s-proverki-togo-nachinaetsya-li-stroka-s-podstroki-nechuvstvitelnoi)
* [Использование Python начинается с проверки, начинается ли список строк с подстроки](#ispolzovanie-python-nachinaetsya-s-proverki-nachinaetsya-li-spisok-strok-s-podstroki)
* [Использование Python начинается с проверки, не начинается ли строка с подстроки](#ispolzovanie-python-nachinaetsya-s-proverki-ne-nachinaetsya-li-stroka-s-podstroki)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Понимание Python начинается с функции

Прежде чем углубляться в использование функции Python `startswith()`, важно понять синтаксис этой функции. В представленном ниже коде разбираются различные обязательные и необязательные параметры, которые предлагает эта функция.

```python
# Understanding the Python startswith() Function
str.startswith(prefix, start, end)
```

Таблица ниже разбивает параметры функции, а также любые значения по умолчанию, которые предоставляет функция:

| Параметр  | Описание                                    | Аргумент по умолчанию | Принятые значения          |
| --------- | ------------------------------------------- | --------------------- | -------------------------- |
| `prefix=` | Префикс для проверки начала строки          | N/A                   | string or tuple of strings |
| `start=`  | Начальное положение для проверки в          | `None`                | integer                    |
| `end=`    | Прекратите сравнивать строки в этой позиции | `None`                | integer                    |

Теперь, когда у вас есть хорошее понимание функции, давайте начнем исследовать, как вы можете ее использовать.

### Использование Python начинается с проверки, начинается ли строка с подстроки

Функция `startswith()` в Python проверяет, начинается ли строка с подстроки и возвращает логическое значение. Функция вернёт `True`, если строка начинается с предоставленных подстрок, и `False` в противном случае. **Важно отметить, что функция чувствительна к регистру, поэтому использование строчных или заглавных букв требует внимательного подхода.**

Давайте рассмотрим пример:

```python
# Using Python startswith() to Check if a String Starts with a Substring
text = 'Welcome to datagy.io'

print('text starts with "W": ', text.startswith('W'))
print('text starts with "w": ', text.startswith('w'))

# Returns:
# text starts with "W":  True
# text starts with "w":  False
```

Из примера выше мы видим, что, когда проверяем, начинается ли строка с `'W'` и `'w'`, первое возвращает True, а второе — False.

Аналогично, мы можем использовать параметр `start=`, чтобы изменить начальную позицию проверки. Так как строки в Python индексируются с 0, мы можем использовать эти позиции индексов. Давайте начнем проверку, начинается ли вторая буква строки с символа `'e'`:

```python
# Modifying the Start Position of the startswith() Function
text = 'Welcome to datagy.io'
print(text.startswith('e', 1))

# Returns: True
```

Использование этого эквивалентно срезу строки до указанной начальной позиции. В приведенном выше примере это можно переписать как `text[1:].startswith('e')`. Однако использование параметра `start=` намного проще для чтения.

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

### Использование Python начинается с проверки того, начинается ли строка с нескольких подстрок

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

Чтобы сделать это, вы можете просто передать кортеж строк в метод `.startswith()`. Это проверит, начинается ли строка с _какого-либо_ из вариантов. Давайте посмотрим, как это выглядит на Python:

```python
# Checking if a String Starts With Multiple Different Substrings
text = 'Welcome to datagy.io'
print(text.startswith(('W', 'w')))

# Returns: True
```

В блоке кода выше мы передали кортеж, содержащий строчные и прописные буквы "w", в метод. Это позволяет проверить, начинается ли строка с одной из этих букв. В данном случае метод вернул true, указывая на то, что строка действительно начинается с одной из этих букв.

### Использование Python начинается с проверки того, начинается ли строка с подстроки, нечувствительной к регистру

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

Из-за этого у нас есть два варианта использования метода `.startswith()` с учетом регистра:

1. Пройти через все варианты чувствительности к регистру
2. Преобразование строки в строчные буквы

Давайте рассмотрим первый вариант:

```python
# Checking if a String Starts With Substring Using Case Insensitivity
text = 'Welcome to datagy.io'
print(text.startswith(('W', 'w')))

# Returns: True
```

В приведенном выше блоке кода мы проверили, начинается ли строка с строчной или прописной буквы `'w'`, передав кортеж из двух букв. Этот метод работает, когда есть меньше [вариантов комбинаций](https://datagy.io/python-combinations-of-a-list/), но в противном случае он был бы исчерпывающим.

Или, мы можем представить строку в нижнем регистре и проверить наличие подстроки в нижнем регистре. Давайте посмотрим, как это выглядит:

```python
# Checking if a String Starts With Substring Using Case Insensitivity
text = 'Welcome to datagy.io'
print(text.lower().startswith(('w')))

# Returns: True
```

В коде выше мы сначала используем метод `.lower()`, чтобы представить строку в нижнем регистре. Затем мы можем использовать метод `.startswith()`, чтобы проверить, начинается ли строка с заданного шаблона без учета регистра.

### Использование Python начинается с проверки, начинается ли список строк с подстроки

В этом разделе вы узнаете, как использовать метод Python `.startswith()`, чтобы проверить, начинаются ли элементы в списке строк с подстроки. Это может быть полезно, когда вы хотите [итеративно просмотреть все строки в списке](https://datagy.io/iterate-through-list-in-python/), чтобы выяснить, начинаются ли они с подстроки. Для этого можно использовать генератор списков, [который позволяет упростить итерацию](https://datagy.io/list-comprehensions-in-python/)

```python
# Checking a List of Strings to Check if Strings Start With Substring
texts = ['welcome', 'to', 'datagy']
starts = [True if text.startswith('w') else False for text in texts]

print(starts)

# Returns: [True, False, False]
```

В приведенном выше блоке кода мы используем генератор списков, который проходит по списку строк. Генератор возвращает `True`, если строка начинается с указанной подстроки, и `False` в противном случае.

Если вы хотите проверить, начинается ли **какая-либо** из строк с подстроки, вы можете передать это генераторное выражение в функцию Python `any()`. Функция возвращает `True`, если любой из элементов в переданном массиве истинный. Давайте посмотрим, как это выглядит:

```python
# Checking a List of Strings to Check if Strings Start With Substring
texts = ['welcome', 'to', 'datagy']
starts = any([True if text.startswith('w') else False for text in texts])

print(starts)

# Returns: True
```

### Использование Python начинается с проверки, не начинается ли строка с подстроки

В этом последнем разделе вы узнаете, как использовать метод Python `startswith()`, чтобы **проверить, не начинается ли строка с определенной подстроки**. Это может быть особенно полезно, когда вы хотите убедиться, что строка не начинается с чего-то конкретного. Например, вы можете проверить, не принадлежит ли номер телефона к определенному коду региона.

```python
# Check if a String Doesn't Start with a Substring
text = 'Welcome to datagy.io'
print(not text.startswith(('W')))

# Returns: False
```

В приведенном выше коде перед вызовом метода `.startswith()` используется оператор `not`. Это возвращает противоположное логическое значение того, что возвращает метод. В приведённом примере мы проверяем, начинается ли строка с `'W'` (что так и есть). Однако, поскольку мы применяем `not`, программа возвращает `False`.

### Заключение

В этом посте вы узнали, как использовать метод Python `.startswith()` для проверки, начинается ли строка с определенной подстроки. Сначала вы узнали, как работает метод, изучив его параметры и аргументы по умолчанию. Затем вы узнали, как использовать метод для проверки, начинается ли строка с определенной подстроки, а также с нескольких различных подстрок.

Затем вы узнали, как проверять строки, начинающиеся с подстроки, с учётом регистра. В завершение вы проверили, начинаются ли строки в списке с данной подстроки и начинается ли строка с другой подстроки.

### Дополнительные ресурсы

Чтобы узнать больше о смежных темах, ознакомьтесь с приведёнными ниже уроками:

* Строка Python содержит: проверьте, содержит ли строка подстроку
* Python rfind: найти индекс последней подстроки в строке
* Python: найти индекс (или все) подстроки в строке
* [Python начинается с: Официальная документация](https://docs.python.org/3/library/stdtypes.html#str.startswith)
