Python
Как проверить первый символ строки в Python: индекс 0, startswith и пустая строка
Первый символ строки в Python можно проверить через индекс 0: text[0]. Но перед этим нужно убедиться, что строка не пустая, иначе Python выдаст IndexError
Простой пример
text = "Python"
if text[0] == "P":
print("Строка начинается с P")
В Python индексация начинается с нуля, поэтому text[0] — первый символ, text[1] — второй, text[-1] — последний
Проверка первого символа через text[0]
word = "apple"
if word[0] == "a":
print("Слово начинается с a")
else:
print("Слово начинается с другой буквы")
Такой способ удобен, когда нужен именно один первый символ
Но если строка может быть пустой, код опасен
word = ""
print(word[0])
Ошибка
IndexError: string index out of range
Python не может взять первый символ, потому что в строке нет ни одного символа
Безопасная проверка с условием
word = ""
if word and word[0] == "a":
print("Слово начинается с a")
else:
print("Слово пустое или начинается не с a")
Условие word проверяет, что строка не пустая. Если строка пустая, Python даже не дойдет до word[0], потому что оператор and останавливается на первом ложном условии
Метод startswith
Для проверки начала строки часто лучше использовать startswith()
text = "Python"
if text.startswith("Py"):
print("Строка начинается с Py")
startswith() умеет проверять не только один символ, но и целую подстроку. При этом он безопасно работает с пустой строкой
text = ""
print(text.startswith("P"))
Результат
False
Ошибки не будет
Когда выбрать text[0], а когда startswith
| Задача | Лучше использовать |
|---|---|
| Нужен именно первый символ | text[0], но с проверкой пустой строки |
| Нужно проверить начало слова или фразы | text.startswith(...) |
| Строка может быть пустой | startswith() или проверка if text |
| Нужно получить символ и дальше с ним работать | text[0] |
Пример с startswith() читается естественнее
filename = "report.pdf"
if filename.startswith("report"):
print("Это отчет")
Проверка без учета регистра
Если нужно считать Python и python одинаковыми, приведите строку к одному регистру
text = "Python"
if text.lower().startswith("p"):
print("Строка начинается с p или P")
lower() возвращает строку в нижнем регистре. Исходная строка при этом не меняется
Проверить первый символ в списке строк
words = ["apple", "banana", "avocado", ""]
for word in words:
if word.startswith("a"):
print(word)
Результат
apple
avocado
Пустая строка просто даст False, ошибки не будет
Если используете word[0], нужна защита
for word in words:
if word and word[0] == "a":
print(word)
Проверить, что строка начинается с цифры
text = "2026 год"
if text and text[0].isdigit():
print("Строка начинается с цифры")
Метод isdigit() проверяет, является ли символ цифрой. Здесь снова нужна проверка text, чтобы не брать text[0] у пустой строки
Проверить несколько возможных начал
startswith() умеет принимать кортеж вариантов
url = "https://aglamov.biz"
if url.startswith(("http://", "https://")):
print("Это ссылка")
Это удобно для проверки адрес, расширений, префиксов и команд пользователя
Мини-практика
Напишите программу, которая проверяет, начинается ли введенное слово с буквы п
word = input("Введите слово: ")
if word.lower().startswith("п"):
print("Слово начинается с п")
else:
print("Слово начинается с другой буквы или пустое")
После этого измените программу так, чтобы она проверяла начало строки на http:// или https://
Частые ошибки
Брать text[0] у пустой строки
Проверяйте if text или используйте startswith()
Путать первый символ и первый индекс
Первый символ находится по индексу 0, а не 1
Не учитывать регистр
"Python".startswith("p") вернет False. Используйте lower() или casefold() при необходимости
Использовать срез там, где startswith читается лучше
text[:2] == "Py" работает, но text.startswith("Py") обычно понятнее
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как узнать длину строки в Python: len, пробелы, переносы и Unicode
- Как вывести словарь без скобок в Python: пары ключ-значение, строки и форматирование
- Как заменить букву или символ в строке Python: replace и срезы
- Как написать бота в Telegram на Python: первый бот на aiogram