
В Python строка рассматривается как последовательность символов, где каждый символ имеет индекс, начиная с нуля. Для вычисления длины такой последовательности применяется встроенная функция len(). Она возвращает количество символов, включая пробелы, знаки пунктуации и спецсимволы.
Пример: len(«Python 3.12») вернет число 10, так как в строке учитываются и буквы, и пробел, и цифры, и точка.
Если строка содержит символы Unicode, функция len() все равно подсчитает их корректно. Например, len(«Привет») даст 6, а len(«😊») – 1. Это важно при работе с текстами на разных языках и с эмодзи.
Для проверки длины строки без учета пробелов можно использовать метод replace() перед вызовом len(). Пример: len(«text with spaces».replace(» «, «»)) вернет 13 вместо 15.
Использование функции len() для строки
Функция len() возвращает количество символов в строке, включая пробелы, знаки препинания и специальные символы. Например, len(«Привет») выдаст 6, а len(«Привет, мир!») – 12.
Если строка содержит переносы строк \n или табуляции \t, они также учитываются в результате. Например: len(«A\nB») возвращает 3.
При работе с Unicode каждый символ считается единицей, независимо от того, занимает ли он несколько байт. Например, len(«🙂») вернёт 1, а не количество байтов в кодировке.
Для точного подсчёта символов в пользовательском вводе или файлах достаточно применить len() к строке без предварительной обработки. Если требуется игнорировать пробелы или спецсимволы, используйте дополнительные методы, например replace() или strip(), перед вызовом len().
Подсчёт длины строки с пробелами и без них
Для получения количества символов вместе с пробелами применяется встроенная функция len():
text = "Пример строки"
print(len(text)) # 13
Чтобы исключить пробелы, строку предварительно очищают методом replace() или через генераторное выражение:
text.replace(" ", "")– удаляет только пробелы;"".join(ch for ch in text if not ch.isspace())– убирает все виды пробельных символов (табуляцию, перенос строки и др.).
text = "Пример строки"
print(len(text.replace(" ", ""))) # 12
Если нужно посчитать сразу оба варианта:
- Определить
len(text)для подсчёта с пробелами. - Применить
len(text.replace(" ", ""))для подсчёта без пробелов.
with_spaces = len(text)
without_spaces = len(text.replace(" ", ""))
print(with_spaces, without_spaces) # 13 12
Определение количества символов в многострочной строке
В Python многострочная строка задаётся через тройные кавычки. Пример:
text = «»»Первая строка
Вторая строка»»»
Функция len() возвращает общее количество символов, включая пробелы, табуляции и символы переноса строки:
print(len(text))
Если необходимо исключить переводы строк, используйте замену \n на пустую строку:
print(len(text.replace(«\n», «»)))
Для удаления всех пробельных символов подойдёт метод replace() или модуль re с шаблоном \s:
import re
print(len(re.sub(r»\s+», «», text)))
Таким образом можно точно контролировать, какие символы учитывать при подсчёте.
Длина строки с учётом спецсимволов и управляющих последовательностей
Функция len() считает количество символов в строке, включая невидимые элементы: пробелы, табуляции (\t), символы новой строки (\n) и возврата каретки (\r). Например, len("A\nB") вернёт 3, так как в строке присутствуют символ A, управляющий символ новой строки и B.
При использовании сырых строковых литералов (r"...") управляющие последовательности не интерпретируются, и они учитываются как два символа. Так, len(r"\n") выдаст 2, а не 1.
Юникод-последовательности (\uXXXX, \UXXXXXXXX) при интерпретации занимают одно место, независимо от числа знаков в записи. Например, len("\u0410") равно 1, хотя запись содержит шесть символов.
Если строка формируется через тройные кавычки и содержит переносы строк, каждый перевод учитывается как отдельный символ. Например:
len("""X
Y""") == 3
Чтобы исключить управляющие последовательности из подсчёта, строку можно предварительно обработать методом .encode("unicode_escape").decode() и уже затем применить len(). В этом случае "\n" превратится в два символа \ и n.
Подсчёт длины строки, содержащей эмодзи и юникод-символы

Функция len() в Python возвращает количество кодовых точек Unicode, а не символов, воспринимаемых человеком. Например, строка "👍" имеет длину 1, а "👍🏻" (эмодзи с модификатором тона кожи) – длину 2, так как состоит из базового эмодзи и дополнительного символа-модификатора.
Составные символы, такие как флаг "🇷🇺", считаются как 2 отдельных региональных индикатора, поэтому len("🇷🇺") == 2. Однако визуально пользователь видит один символ. Это нужно учитывать при работе с интерфейсами и подсчёте «реальной» длины текста.
Чтобы подсчитывать количество видимых графем, а не кодовых точек, можно использовать модуль regex, поддерживающий шаблон \X для поиска графемных кластеров:
import regex
s = "👍🏻🇷🇺Привет"
print(len(s)) # 9 (кодовые точки)
print(len(regex.findall(r"\X", s))) # 7 (графемы)
Такой подход позволяет корректно обрабатывать эмодзи, составные символы и диакритические знаки, исключая искажения при подсчёте длины строки.
Сравнение длины разных строк в программе
Для сравнения длины строк в Python используется функция len(). Она возвращает количество символов, включая пробелы и спецсимволы.
Пример сравнения двух строк:
string1 = "Привет"
string2 = "Здравствуйте"
if len(string1) > len(string2):
print("string1 длиннее")
elif len(string1) < len(string2):
print("string2 длиннее")
else:
print("Строки равны по длине")
Рекомендации при сравнении длины:
- Учтите, что пробелы, табуляции и переносы строки учитываются в длине.
- Если важно сравнивать только видимые символы, применяйте
strip()илиreplace()для удаления лишних символов. - Для нескольких строк используйте списки и функцию
max()с ключомlen:
strings = ["короткая", "средняя строка", "очень длинная строка"]
longest = max(strings, key=len)
print("Самая длинная строка:", longest)
Для сортировки строк по длине применяют sorted():
sorted_strings = sorted(strings, key=len)
print("Строки по возрастанию длины:", sorted_strings)
При обработке больших массивов данных рекомендуется избегать повторных вызовов len() внутри циклов и сохранять длину строки в переменной для многократного использования.
Применение len() к результатам операций над строками

Функция len() позволяет измерять длину строк после выполнения операций, таких как конкатенация, повторение и срезы. Это особенно важно при динамическом формировании текста или проверке ограничений длины.
Пример конкатенации двух строк и измерения длины результата:
text1 = "Python"
text2 = "3.11"
combined = text1 + " " + text2
len(combined) # Результат: 10
Повторение строки с помощью оператора *:
pattern = "-"
line = pattern * 20
len(line) # Результат: 20
Использование срезов позволяет определить длину выбранной части строки:
data = "abcdefgh"
slice = data[2:6]
len(slice) # Результат: 4
В таблице представлены типичные комбинации операций и результаты функции len():
| Операция | Пример | len() |
|---|---|---|
| Конкатенация | «abc» + «def» | 6 |
| Повторение | «*» * 5 | 5 |
| Срез | «Python»[1:4] | 3 |
| Удаление пробелов | » hello «.strip() | 5 |
| Замена подстроки | «2025-09-14».replace(«-«, «») | 8 |
При сложных цепочках операций len() можно применять сразу к результату выражения, например: len(("abc" + "def").upper()). Это экономит промежуточные переменные и упрощает код.
Обработка ошибок при передаче неподходящих объектов в len()
Функция len() в Python ожидает объект с определённой структурой – строки, списки, кортежи, словари, множества или объекты с реализованным методом __len__(). Передача других типов, например int или float, вызовет исключение TypeError.
Простейший способ обработать такие ошибки – использовать конструкцию try-except:
try:
длина = len(12345)
except TypeError:
print("Невозможно вычислить длину: неподдерживаемый тип")
Если функция должна принимать разные типы данных, имеет смысл проверять объект перед вызовом len() с помощью hasattr(obj, ‘__len__’):
obj = 12345
if hasattr(obj, '__len__'):
длина = len(obj)
else:
длина = 0 # или другое значение по умолчанию
При работе с пользовательскими объектами необходимо реализовать метод __len__(), чтобы их длину можно было безопасно вычислять через len():
class MyCollection:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items)
Использование этих подходов предотвращает аварийное завершение программы и позволяет контролировать поведение при получении неподходящих объектов, обеспечивая предсказуемую обработку ошибок.
Вопрос-ответ:
Как в Python узнать количество символов в строке?
В Python для подсчета длины строки используется встроенная функция len(). Например, если у вас есть строка text = "Привет", то len(text) вернет число 6, потому что в слове шесть символов.
Считает ли функция len() пробелы и специальные символы?
Да, функция len() учитывает все символы в строке: буквы, цифры, пробелы, знаки препинания и даже невидимые символы вроде табуляции или перевода строки. Например, len("Привет!\n") вернет 8, потому что после слова «Привет!» есть символ перевода строки.
Можно ли узнать длину строки без использования функции len()?
Да, можно пройтись по строке в цикле и посчитать символы вручную. Например, через цикл for можно увеличить счетчик на единицу для каждого символа. Но встроенная функция len() делает это намного проще и быстрее.
Почему len() показывает меньшее количество символов, чем я ожидал?
Это может происходить, если строка содержит специальные символы, например, символы переноса строки или невидимые пробелы. Иногда копирование текста из интернета добавляет невидимые символы, которые тоже учитываются. Чтобы проверить это, можно вывести каждый символ строки отдельно с помощью цикла и функции repr().
Можно ли узнать длину строки, если она хранится в переменной типа bytes?
Да, для объектов типа bytes также работает функция len(). Она покажет количество байт в объекте. Например, data = b"Привет" и len(data) вернет 12, потому что каждый символ кириллицы в кодировке UTF-8 занимает 2 байта.
Как узнать количество символов в строке в Python?
В Python для определения длины строки используется встроенная функция len(). Она принимает строку в качестве аргумента и возвращает целое число, равное количеству символов. Например, len("Привет") вернёт 6, так как в слове шесть символов. Функция учитывает все символы, включая пробелы и знаки препинания.
