Как посчитать количество символов в строке python
Перейти к содержимому

Как посчитать количество символов в строке python

How to count characters in a string? (python)

user avatar

First of all, don’t use str as a variable name, it will mask the built-in name.

As for counting characters in a string, just use the str.count() method:

If you are just interested in understanding why your current code doesn’t work, you are printing 1 four times because you will find four occurrences of ‘e’, and when an occurrence is found you are printing len(scr) which is always 1 .

Изучаем Python. №2. Строки


Сегодня рассмотрим строки. Это один из основных базовых элементов языка Python.

Пример: считаем количество символов в строке:

По сути, интерпретатор показывает сколько байт занимает строка, а поскольку мы можем использовать кодировку UTF-8, то на каждый символ выделяется по 2 байта:

Помимо этого строку можно рассматривать как массив символов и соответственно обращаться к каждому символу по отдельности. Счет символов начинается с 0.

С строками можно проделывать и математические операции:

Поиск по строке в Python с помощью функции find(). В примере мы произведем поиск слова в строке. Помним, что счет идет с 0. В результате мы получим номер символа, после которого будет наше слово. Если ввести слово, которого нет в строке, например «papa», то результатом будет -1.

Изменение символов в строке с помощью функции replace(), где мы меняем mama на papa:

Разбивание строки по разделителю в python с помощью функции split():

Преобразовать все символы в строке к верхнему регистру с помощью функции upper():

Изменяемые и неизменяемые объекты (мутирующие и немутирующие)
Неизменяемые: целые числа(int),числа с плавающей точкой(float), комплексные, строки, кортежи.
Изменяемые: списки, множества, словари.

Пример, как изменить список:

На этом тему строк пока завершим. Если у вас есть вопросы или замечания, то буду рад увидеть их в комментариях.

17 идей о “ Изучаем Python. №2. Строки ”

Мне очень нравятся твои уроки. Ты классно и доходчиво объясняешь.

Спасибо большое! Мне приятно, что кому-то пригодились мои уроки.

>p = «tolkobukvi»
>print p.isalpha()
>True
>g = «probel i chislo 5»
>print g.isalpha()
>False
Странно,но у меня эта программа не работает,почему

И есть ошибка. В строке.
«Проверить состоит ли строка только из букв с помощью функции isalpha(). Если в троке только буквы то результат будет — True, если же в строке есть пробелы или числа — False: »
=====
Написано в «троке»

Исправил. Спасибо, что нашел))).

Очень полезные уроки, спасибо!
Только у меня функция print str[0:3] возвращает «str», а не «stri» ��

вы на каком питоне пробовали это делать?

Здраствуите в вашем последнем примере ошибка s[2] не далжно быть в скобке . Проверте у меня ошибка выводить . СПАСИБО! ВАШИ УРОКИ ТАК ЛЕГКО И ПРОСТ ДАЖЕ ТУПОИ СМОЖЕТ ПОНЯТЬ .

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

Спасибо за поправку

блин, все круто, но я как человек, который вообще не понимает в этом ничего ( поэтому и зашел сюда) не могу понять одну вещь.
откуда мне знать что писать в программу? есть какой-то анбор команд которые я должен запомнить и писать их в п определенной последоватильности или как?
что это за значения tmp str len. Если с print все понятно( хотя и про эту команду ничего не сказано, но тут не сложно догадаться), то как тогда учить что-то дальше, если не объясняется что ессть что

Подскажите, у меня в первых двух примерах print len(tmp), где string и строка выводится одно и то же число 6, а у вас во втором случае 12. У меня ошибка или у вас?

Читайте внимательнее текст перед вторым примером: «По сути, интерпретатор показывает сколько байт занимает строка, а поскольку мы можем использовать кодировку UTF-8, то на каждый символ выделяется по 2 байта.»
если у вас 6 кириллических символа считает, как 6 байт, тогда, возможно, в интерпретаторе что-то изменилось на данный момент.

какие функций выполняет strcat (s1.s2)
strncat (s1.s2.n)

мне нужна программа кода
1. где находят сколько букв «а» в слове

2. где сравнивают длины строк

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Индексация и разделение строк в Python 3

Индексация и разделение строк в Python 3

Тип строки данных Python представляет собой последовательность, составленную из одного или нескольких отдельных символов, в том числе букв, чисел, пробелов или специальных символов. Поскольку строка представляет собой последовательность, к ней можно получить доступ посредством индексации и разделения, как и к другим типам данных на базе последовательностей.

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

Индексация строк

Как и тип данных списка, который содержит элементы, соответствующие индексу, строки также содержат символы, которым соответствуют индексы, начиная с 0.

Для строки Sammy Shark! индекс выглядит следующим образом:

S a m m y S h a r k !
0 1 2 3 4 5 6 7 8 9 10 11

Как видите, первая S начинается с индекса 0, а заканчивается строка символом ! с индексом 11.

Также отметим, что символу пробела между Sammy и Shark также соответствует собственный индекс. В данном случае пробелу соответствует индекс 5.

Восклицательному знаку ( ! ) также соответствует индекс. Все другие специальные символы и знаки препинания, в том числе *#$&. ;? , также являются символами и будут иметь свои индексы.

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

Доступ к символам через положительный числовой индекс

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

Когда мы ссылаемся на определенный числовой индекс строки, Python возвращает символ, находящийся на соответствующей позиции. Поскольку букве y соответствует индекс 4 строки ss = "Sammy Shark!" , когда мы выводим ss[4] , мы получаем y в качестве вывода.

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

Доступ к символам через отрицательный индекс

Если у нас имеется длинная строка, и мы хотим использовать символ ближе к концу строки, мы также можем использовать обратный отсчет от конца строки, начиная с индекса -1 .

Для той же строки Sammy Shark! отрицательная разбивка индекса выглядит следующим образом:

S a m m y S h a r k !
-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Используя отрицательные индексы, мы можем вывести символ r , используя ссылку на его положение в индексе -3, как показано в следующей последовательности:

Использование отрицательных индексов может быть полезно для изоляции отдельных символов ближе к концу длинной строки.

Разделение строк

Также мы можем вызвать ряд символов из строки. Допустим, мы хотим вывести слово Shark . Для этого мы можем создать срез, представляющий собой последовательность символов в исходной строке. С помощью срезов мы можем вызывать несколько значений символов, создавая диапазоны символов, разделенные двоеточием [x:y] :

При построении среза, такого как [6:11] , первый индекс соответствует началу среза (включительно), а второй — окончанию среза (не включительно). Поэтому в нашем примере конец диапазона обозначается индексом позиции сразу после конца строки.

При разделении строк на срезы мы создаем подстроки, то есть, строки внутри других строк. Вызывая ss[6:11] , мы вызываем подстроку Shark , существующую в строке Sammy Shark! .

Если мы хотим включить любой конец строки, мы можем пропустить одно из чисел в синтаксисе string[n:n] . Например, если нам нужно вывести первое слово строки ss — “Sammy”, мы можем сделать это так:

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

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

Если мы укажем только индекс перед двоеточием и не укажем второй индекс, подстрока будет идти от соответствующего первому индексу символа до конца строки.

Для создания срезов также можно использовать отрицательные индексы. Как мы уже говорили раньше, отрицательные индексы строки начинаются с -1 и отсчитываются далее к началу строки. При использовании отрицательных индексов, мы начинаем с меньшего числа, потому что соответствующий ему символ идет раньше.

Давайте используем два отрицательных индекса для создания среза строки ss :

Подстрока “ark” выводится из строки “Sammy Shark!”, потому что символ “a” соответствует индексу -4, а символ “k” находится перед позицией индекса -1.

Определение шага при создании срезов строк

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

Давайте снова посмотрим на пример выше, который выводит подстроку “Shark”:

Мы можем получить те же результаты, добавив третий параметр шага со значением 1:

Если шаг равен 1, выводятся все символы между двумя индексами среза. Если мы опустим параметр шага, Python будет по умолчанию использовать значение 1.

Если же мы увеличим значение шага, некоторые символы будут пропущены:

Если мы зададим шаг 2 как последний параметр в синтаксисе Python ss[0:12:2] , будет пропущен каждый второй символ. Выводимые символы обозначены красным цветом:

S a m m y S h a r k !

Обратите внимание, что символ пробела с индексом 5 также пропускается, если задан шаг 2.

Если мы используем более крупное значение шага, подстрока будет значительно короче:

Если мы укажем шаг 4 как последний параметр синтаксиса Python ss[0:12:4] , будет выведен только каждый четвертый символ. Выводимые символы также обозначены красным цветом:

S amm y Sh a rk!

В этом примере символ пробела тоже пропускается.

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

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

Также мы можем указать отрицательное значение шага и использовать его для вывода исходной строки в обратном порядке, если зададим шаг -1:

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

Давайте повторим эту команду, но используем шаг -2:

В этом примере, ss[::-2] , мы включаем в диапазон всю первоначальную строку, поскольку индексы не указаны, и задаем обратный порядок вывода отрицательным значением шага. Кроме того, с шагом -2 мы пропускаем каждую вторую букву строки, выводимой в обратном порядке:

! k r a h S [пробел] y m m a S

В этом примере выводится символ пробела.

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

Методы подсчета

Когда мы говорим об индексах символов в строках, стоит упомянуть о некоторых методах подсчета строк или вывода индексов. Это может быть полезно для того, чтобы ограничить количество символов, которые мы хотим включить в форму ввода, или чтобы сравнивать строки. Для подсчета строк, как и других символов последовательных данных, можно использовать несколько методов.

Вначале мы рассмотрим метод len() , который поможет определить длину любого типа данных упорядоченной или неупорядоченной последовательности, включая строки, списки, кортежи и словари.

Давайте выведем длину строки ss :

Длина строки “Sammy Shark!” составляет 12 символов, включая символ пробела и символ восклицательного знака.

Вместо использования переменной мы также можем передать строку прямо в метод len() :

Метод len() подсчитывает общее количество символов в строке.

Если нам нужно подсчитать, сколько раз в строке встречается определенный символ или последовательность символов, мы можем использовать метод str.count() . Давайте возьмем нашу строку ss = "Sammy Shark!" и подсчитаем, сколько раз в ней встречается символ “a”:

Мы можем поискать и другой символ:

Хотя в строке есть буква “S”, важно понимать, что при подсчете учитывается регистр. Если мы хотим найти все буквы в строке независимо от регистра, мы можем использовать метод str.lower() , чтобы предварительно конвертировать все символы строки в нижний регистр. Вы можете узнать больше об этом методе в учебном модуле Введение в методы строк в Python 3.

Давайте попробуем использовать str.count() с последовательностью символов:

В строке likes последовательность символов, эквивалентная “likes”, встречается в исходной строке 3 раза.

Также мы можем определить позицию символа или последовательности символов в строке. Для этого мы можем использовать метод str.find() , который выводит позицию символа на базе номера индекса.

Мы можем посмотреть, где появляется первый символ “m” в строке ss :

Первый символ “m” появляется в строке “Sammy Shark!” на позиции с индексом 2. Мы можем проверить позиции индекса в строке ss выше.

Давайте посмотрим, где встречается первая последовательность символов “likes” в строке likes :

Первый экземпляр последовательности символов “likes” начинается с индекса 6, соответствующего позиции символа l в последовательности likes .

Что делать, если, если мы хотим увидеть, где начинается вторая последовательность “likes”? Для этого мы можем передать второй параметр в метод str.find() , который будет начинаться с конкретного индекса. Вместо того, чтобы начинать с начала строки, начнем с индекса 9:

Во втором примере, который начинается с индекса 9, первая последовательность символов “likes” начинается с индекса 34.

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

В последнем примере мы ищем позицию последовательности “likes” между индексами 40 и -6. Поскольку последний параметр отрицательный, отсчет выполняется с конца первоначальной строки.

Методы строки len() , str.count() и str.find() можно использовать для определения длины, количества символов или последовательностей символов и индексов символов или последовательностей символов в строках.

Заключение

Возможность вызова определенных индексов строк или конкретного среза строки дает дополнительную гибкость при работе с этим типом данных. Поскольку строки относятся к последовательному типу данных, как списки и кортежи, для доступа к ним можно использовать индексы и срезы.

Чтобы продолжить изучение строк, вы можете прочитать дополнительные материалы по форматированию строк и методам строк.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *