Как найти все пробелы в строке python

str.isspace() returns False for a valid and empty string

>>> tests = ['foo', ' ', 'rnt', '']
>>> print([s.isspace() for s in tests])
[False, True, True, False]

Therefore, checking with not will also evaluate None Type and '' or "" (empty string)

>>> tests = ['foo', ' ', 'rnt', '', None, ""]
>>> print ([not s or s.isspace() for s in tests])
[False, True, True, True, True, True]

7 ответов

def tt(w): 
    if ' ' in w: 
       print 'space' 
    else: 
       print 'no space' 

>>   tt('b ')
>> space
>>  tt('b b')
>> space
>>  tt('bb')
>> no space

Я нахожусь в поезде, жаль, что не объясняю.. не могу набрать много..

doniyor
18 нояб. 2014, в 06:51

Поделиться

Вы используете isspace, в котором говорится

str.isspace()

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

Для 8-битных строк этот метод зависит от локали.

Nilesh
18 нояб. 2014, в 07:16

Поделиться

Вот аккуратный метод, который иллюстрирует гибкость понимания списков. Это вспомогательный метод, который проверяет, содержит ли данная строка какие-либо пробелы.

код:

import string
def contains_whitespace(s):
    return True in [c in s for c in string.whitespace]

Пример:

>>> contains_whitespace("BB")
False
>>> contains_whitespace("B B")
True

Это, конечно, можно расширить, чтобы проверить, содержит ли какая-либо строка элемент в любом наборе (а не просто пробел). Предыдущее решение — аккуратное, короткое решение, но некоторые могут утверждать, что его трудно читать и меньше Pythonic, чем что-то вроде:

def contains_whitespace(s):
    for c in s:
        if c in string.whitespace:
            return True
    return False

Duke
18 нояб. 2014, в 07:15

Поделиться

Поскольку вы ищете больше, чем просто ' ', где вы можете использовать ' ' in tgt, вы можете использовать any:

for s in ('B ', 'B B', 'BnB', 'BB'):
    print repr(s), any(c.isspace() for c in s)

Печать

'B ' True
'B B' True
'BnB' True
'BB' False

dawg
18 нояб. 2014, в 07:38

Поделиться

user = 'B B'
for x in user:
    if x.isspace():
        print("no")
    else:print("yes")

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

используйте вспомогательную функцию:

def space(text):
    if ' ' in text:
        return True
    else: return False

демо:

>>> ' ' in 'B B'
True
>>> ' ' in 'BB'
False

используйте in для проверки

если вы хотите использовать isspace:

def space(text):
    for x in text:
        if x.isspace():
            return True
    return False

Вместо того, чтобы возвращать True или False, вы также можете вернуть желаемую строку:

>>> def space(text):
...     if ' ' in text:
...         return " yes Spaces"
...     else: return " No Spaces"
... 
>>> space('B B')
' yes Spaces'
>>> space('BB')
' No Spaces'

Hackaholic
18 нояб. 2014, в 06:42

Поделиться

Вы можете использовать str.split, чтобы проверить, содержит ли строка пробелы:

>>> ''.split()
[]
>>> '  '.split()
[]
>>> 'BB'.split()
['BB']
>>> ' B '.split()
['B']
>>> 'B B'.split()
['B', 'B']

Итак, вы можете проверить как

def hasspace(x):
    if x:
        s = x.split()
        return len(s) == 1 and x == s[0]
    return False

Если вы пытаетесь проверить только целые слова в строке (т.е. вас не беспокоят окружающие пространства, которые можно удалить с помощью x.strip()), условие x == s[0] больше не требуется. Проверка становится единственным выражением:

def hasspace(x):
    return x and len(x.split()) == 1

Теперь вы можете сделать

if hasspace(user):
    print("NO!!!")
else:
    print("YES!!!")

Mad Physicist
09 март 2018, в 20:51

Поделиться

In [1]: a<br>
Out[1]: ' btn'

In [2]: (' ' in a)or('t' in a)or('n' in a)<br>
Out[2]: True

Vietnhi Phuvan
18 нояб. 2014, в 18:30

Поделиться

Ещё вопросы

  • 0Вызов функции из директивы без изолированной области видимости
  • 1Python: поддержка IDE для вывода запроса к базе данных, например, фрейма данных pandas
  • 0Как получить данные с помощью соединения в MySQL
  • 0Хранение двух отдельных изображений в двух отдельных ячейках в таблице MySQL
  • 0Логика при включении классов cpp в целевой проект c
  • 1как показать и скрыть слово в поле пароля, нажав на кнопку
  • 0Изменение данных контроллера с помощью директив AngularJS
  • 0Как выровнять навигационную панель по нижней части окна без зазора между кнопками и краем окна
  • 1Обобщения: «Синтаксическая ошибка на токене» расширяется «, ожидается»
  • 0TMXTiledMap показывает пустой экран
  • 0Форма обратной связи mailer.php возвращает пустую страницу
  • 0jQuery CSS удалить отрицательное значение
  • 0выбрать элемент окна выбора по номеру элемента в jQuery
  • 0Скользить вверх переходы
  • 1C # получить данные формы сообщения, отправленные из браузера через сокет, иногда сокет закрывает. Почему?
  • 1Переменная TensorFlow не восстанавливается правильно
  • 1Повторение совпадения
  • 0Как создать функцию обновления на nodejs / mongodb?
  • 1Вы можете подавить запрос «Duplicate Mark» в Revit во время программы на c #?
  • 1Дочерний элемент без корневого элемента в Java
  • 0Обновление отдельных тегов span, начиная с x секунд
  • 1Запрос веб-службы не отображает строки в массиве
  • 0Начальная точка Директивы угловой группировки
  • 1Цветная сгруппированная гистограмма на основе сравнения чисел d3
  • 0Перестала работать горизонтальная линия через заголовок заголовка
  • 0Как я могу сместить прокрутку на якорь HTML?
  • 1MediaRouteButton не активен во фрагменте
  • 0элемент стиля html, за которым следует определенный класс
  • 0Как настроить полосу прокрутки для отображения только в одном div
  • 1Превратить arraylist из строки в arraylist
  • 1Тестирование Junit: тестирование всех возможных границ?
  • 1Чтение определенного столбца из CSV с DictReader
  • 1Неподдерживаемый тип операнда с использованием функции sum
  • 0Angularjs Многомерный массив и два относительных поля выбора
  • 1Какова цель программирования для интерфейса? [Дубликат]
  • 1Как условно покрасить ячейки Excel вывода в Python?
  • 0Инициировать событие jQuery (bPopup) для выбранного значения раскрывающегося списка.
  • 0Угловой сервис не инициализируется
  • 0Изменить цвет фона из ввода
  • 1Отображать изображения в сетке
  • 1Не удается найти сбой символа в тесте Junit
  • 0CSS выровнять div с текстовым полем
  • 0Диалоговое окно Jquery не работает после того, как я установил лайтбокс
  • 0преобразовать строку UTF-8 в Windows-1250 в JavaScript
  • 0Выполнение запроса занимает более 40 секунд
  • 1Как отложить вызов в базу данных от gwt?
  • 1Чистое разделение вида и кода с помощью Vue с использованием шаблонов
  • 0Слияние сортировки по структурам не работает
  • 1Предварительная обработка Sklearn Imputer, когда в столбце отсутствуют значения
  • 1Добавление тега метаданных google_analytics_adid_collection_enabled в Cordova AndroidManifest.xml

0 / 0 / 0

Регистрация: 05.06.2018

Сообщений: 5

1

Задача по питону на поиск пробелов

14.08.2019, 17:08. Показов 5586. Ответов 8


Студворк — интернет-сервис помощи студентам

Помогите пожалуйста составить программу

#Пользователь вводит строку произвольной длины.
#Программа выводит количество пробелов.
#Если пробелов нет, программа выводит «пробелы не обнаружены».
#Обратите внимание, что в выводимой строке все буквы строчные.
#Команду print используйте только для вывода требуемых значений — проверяющая система работает именно по тем строкам, которые Вы выводите. Для запроса информации используйте input



0



1849 / 854 / 121

Регистрация: 29.01.2013

Сообщений: 5,070

14.08.2019, 17:12

2

123qsdrg, так а вопрос в чём?



0



0 / 0 / 0

Регистрация: 05.06.2018

Сообщений: 5

14.08.2019, 17:14

 [ТС]

3

Нужна программа по этим условиям на питоне, программа должна считать пробелы, если их нет то писать что пробелов нет



0



1849 / 854 / 121

Регистрация: 29.01.2013

Сообщений: 5,070

14.08.2019, 17:48

4

123qsdrg, показывайте, что у вас получилось, в чём возникли проблемы. Если у вас не достаточно знаний по Python, рекомендую книги незабвенного Марка Лутца.



0



123qsdrg

0 / 0 / 0

Регистрация: 05.06.2018

Сообщений: 5

14.08.2019, 17:55

 [ТС]

5

понимаю так?

Python
1
2
3
s=input("Строка:")
p=s.count(' ')
print(p if p!=0 else 'пробелы не обнаружены')



0



Автоматизируй это!

Эксперт Python

7067 / 4382 / 1178

Регистрация: 30.03.2015

Сообщений: 12,822

Записей в блоге: 29

14.08.2019, 17:57

6

Цитата
Сообщение от 123qsdrg
Посмотреть сообщение

проверяющая система

она тебе зачем, если ты не знаешь питона?
а если знаешь то в чем вопрос?

Добавлено через 1 минуту

Цитата
Сообщение от 123qsdrg
Посмотреть сообщение

s=input(«Строка:»)
p=s.count(‘ ‘)
print(p if p!=0 else ‘пробелы не обнаружены’)

ну что-то вроде, не говори только, что не принимает



0



0 / 0 / 0

Регистрация: 05.06.2018

Сообщений: 5

14.08.2019, 17:58

 [ТС]

7

да в том то и дело, питона не касался) а в универе решили математиков поучить питону



0



Автоматизируй это!

Эксперт Python

7067 / 4382 / 1178

Регистрация: 30.03.2015

Сообщений: 12,822

Записей в блоге: 29

14.08.2019, 17:59

8

123qsdrg, так вроде же норм код, не проходит тест чтоль?



0



0 / 0 / 0

Регистрация: 05.06.2018

Сообщений: 5

14.08.2019, 18:00

 [ТС]

9

поначалу хотел чтобы тут написали) потом сам допетрил) ахаха



0



Время чтения 2 мин.

Строковая функция String isspace() используется в Python для проверки того, содержит ли аргумент все пробельные символы, такие как:

  1. ‘ ‘ — Space
  2. ‘t’ – Horizontal tab
  3. ‘n’ — Newline
  4. ‘v’ — Vertical tab
  5. ‘f’ — Feed
  6. ‘r’ — Carriage return.

Содержание

  1. Что такое функция string isspace() в Python?
  2. Синтаксис
  3. Параметры
  4. Возвращаемое значение
  5. Примеры программ с методом isspace()

String.isspace() — это встроенный метод Python, который сообщает нам, содержит ли данная строка только символы пробела или нет. Метод isspace() возвращает true, если все символы строки являются пробелами, и возвращает false во всех остальных случаях.

Существуют различные типы пробельных символов, такие как ‘n’- новая строка, ‘ ‘-пробел, ‘t’- горизонтальная вкладка и многие другие. С помощью приведенных выше различных типов пробелов мы можем классифицировать, содержит ли наша строка только пробелы или нет, что мы можем проверить с помощью метода isspace().

Синтаксис

Здесь string — это строковая переменная, которая должна быть проверена, содержит ли она все символы, пробелы или нет.

Параметры

Метод String.isspace() не содержит никаких параметров и выдает ошибку при передаче любого параметра.

Возвращаемое значение

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

Примеры программ с методом isspace()

  • Пример 1: Напишите программу, показывающую работающий метод isspace().

# app.py

h1 = »  «

h2 = «Hello    Boy»

h3 = «nntnn»

h4 = «HelloGirl»

print(h1.isspace())

print(h2.isspace())

print(h3.isspace())

print(h4.isspace())

Вывод:

python3 app.py

True

False

True

False

  • Пример 2: напишите программу, которая проверяет, содержат ли две строки только пробельные символы. Выведите «Yes», если верно, и «No», если ложно.

# app.py

h1 = »  «

h2 = «t»

if(h1.isspace() and h2.isspace()):

    print(«YES»)

else:

    print(«NO»)

Вывод:

  • Пример 3: мы можем вычислить общее количество пробелов в строке.

# app.py

string = ‘KGF movie starringnnnnnn Yash’

count = 0

for a in string:

    if(a.isspace()) == True:

        count += 1

print(count)

Вывод:

Текстовые переменные str в Питоне

Строковый тип str в Python используют для работы с любыми текстовыми данными. Python автоматически определяет тип str по кавычкам – одинарным или двойным:

        >>> stroka = 'Python'
>>> type(stroka)
<class 'str'>
>>> stroka2 = "code"
>>> type(stroka2)
<class 'str'>

    

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

        stroka = ''
    

Или:

        stroka2 = ""
    

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

        >>> print("'Самоучитель Python' - возможно, лучший справочник по Питону.")
'Самоучитель Python' - возможно, лучший справочник по Питону.
>>> print('"Самоучитель Python" - возможно, лучший справочник по Питону.')
"Самоучитель Python" - возможно, лучший справочник по Питону.

    

Использование одного и того же вида кавычек внутри и снаружи строки вызовет ошибку:

        >>> print(""Самоучитель Python" - возможно, лучший справочник по Питону.")
  File "<pyshell>", line 1
    print(""Самоучитель Python" - возможно, лучший справочник по Питону.")
                      ^
SyntaxError: invalid syntax

    

Кроме двойных " и одинарных кавычек ', в Python используются и тройные ''' – в них заключают текст, состоящий из нескольких строк, или программный код:

        >>> print('''В тройные кавычки заключают многострочный текст.
Программный код также можно выделить тройными кавычками.''')
В тройные кавычки заключают многострочный текст.
Программный код также можно выделить тройными кавычками.

    

Длина строки len в Python

Для определения длины строки используется встроенная функция len(). Она подсчитывает общее количество символов в строке, включая пробелы:

        >>> stroka = 'python'
>>> print(len(stroka))
6
>>> stroka1 = ' '
>>> print(len(stroka1))
1

    

Преобразование других типов данных в строку

Целые и вещественные числа преобразуются в строки одинаково:

        >>> number1 = 55
>>> number2 = 55.5
>>> stroka1 = str(number1)
>>> stroka2 = str(number2)
>>> print(type(stroka1))
<class 'str'>
>>> print(type(stroka2))
<class 'str'>

    

Решение многих задач значительно упрощается, если работать с числами в строковом формате. Особенно это касается заданий, где нужно разделять числа на разряды – сотни, десятки и единицы.

Сложение и умножение строк

Как уже упоминалось в предыдущей главе, строки можно складывать – эта операция также известна как конкатенация:

        >>> str1 = 'Python'
>>> str2 = ' - '
>>> str3 = 'самый гибкий язык программирования'
>>> print(str1 + str2 + str3)
Python - самый гибкий язык программирования

    

При необходимости строку можно умножить на целое число – эта операция называется репликацией:

        >>> stroka = '*** '
>>> print(stroka * 5)
*** *** *** *** ***

    

Подстроки

Подстрокой называется фрагмент определенной строки. Например, ‘abra’ является подстрокой ‘abrakadabra’. Чтобы определить, входит ли какая-то определенная подстрока в строку, используют оператор in:

        >>> stroka = 'abrakadabra'
>>> print('abra' in stroka)
True
>>> print('zebra' in stroka)
False

    

Для обращения к определенному символу строки используют индекс – порядковый номер элемента. Python поддерживает два типа индексации – положительную, при которой отсчет элементов начинается с 0 и с начала строки, и отрицательную, при которой отсчет начинается с -1 и с конца:

Положительные индексы 0 1 2 3 4 5 6
Пример строки P r o g l i b
Отрицательные индексы -7 -6 -5 -4 -3 -2 -1

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

        >>> stroka = 'программирование'
>>> print(stroka[7])
м
>>> print(stroka[-1])
е

    

Срезы строк в Python

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

        >>> stroka = 'программирование'
>>> print(stroka[7:10])
мир

    

Диапазон среза [a:b] начинается с первого указанного элемента а включительно, и заканчивается на последнем, не включая b в результат:

        >>> stroka = 'программa'
>>> print(stroka[3:8])
грамм
    

Если не указать первый элемент диапазона [:b], срез будет выполнен с начала строки до позиции второго элемента b:

        >>> stroka = 'программa'
>>> print(stroka[:4])
прог

    

В случае отсутствия второго элемента [a:] срез будет сделан с позиции первого символа и до конца строки:

        >>> stroka = 'программa'
>>> print(stroka[3:])
граммa

    

Если не указана ни стартовая, ни финальная позиция среза, он будет равен исходной строке:

        >>> stroka = 'позиции не заданы'
>>> print(stroka[:])
позиции не заданы

    

Шаг среза

Помимо диапазона, можно задавать шаг среза. В приведенном ниже примере выбирается символ из стартовой позиции среза, а затем каждая 3-я буква из диапазона:

        >>> stroka = 'Python лучше всего подходит для новичков.'
>>> print(stroka[1:15:3])
yoлшв

    

Шаг может быть отрицательным – в этом случае символы будут выбираться, начиная с конца строки:

        >>> stroka = 'это пример отрицательного шага'
>>> print(stroka[-1:-15:-4])
а нт

    

Срез [::-1] может оказаться очень полезным при решении задач, связанных с палиндромами:

        >>> stroka = 'А роза упала на лапу Азора'
>>> print(stroka[::-1])
арозА упал ан алапу азор А

    

Замена символа в строке

Строки в Python относятся к неизменяемым типам данных. По этой причине попытка замены символа по индексу обречена на провал:

        >>> stroka = 'mall'
>>> stroka[0] = 'b'
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
TypeError: 'str' object does not support item assignment

    

Но заменить любой символ все-таки можно – для этого придется воспользоваться срезами и конкатенацией. Результатом станет новая строка:

        >>> stroka = 'mall'
>>> stroka = 'b' + stroka[1:]
>>> print(stroka)
ball

    

Более простой способ «замены» символа или подстроки – использование метода replace(), который мы рассмотрим ниже.

Полезные методы строк

Python предоставляет множество методов для работы с текстовыми данными. Все методы можно сгруппировать в четыре категории:

  • Преобразование строк.
  • Оценка и классификация строк.
  • Конвертация регистра.
  • Поиск, подсчет и замена символов.

Рассмотрим эти методы подробнее.

Преобразование строк

Три самых используемых метода из этой группы – join(), split() и partition(). Метод join() незаменим, если нужно преобразовать список или кортеж в строку:

        >>> spisok = ['Я', 'изучаю', 'Python']
>>> stroka = ' '.join(spisok)
>>> print(stroka)
Я изучаю Python

    

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

        >>> kort = ('Я', 'изучаю', 'Django')
>>> stroka = '***'.join(kort)
>>> print(stroka)
Я***изучаю***Django

    

Метод split() используется для обратной манипуляции – преобразования строки в список:

        >>> text = 'это пример текста для преобразования в список'
>>> spisok = text.split()
>>> print(spisok)
['это', 'пример', 'текста', 'для', 'преобразования', 'в', 'список']

    

По умолчанию split() разбивает строку по пробелам. Но можно указать любой другой символ – и на практике это часто требуется:

        >>> text = 'цвет: синий; вес: 1 кг; размер: 30х30х50; материал: картон'
>>> spisok = text.split(';')
>>> print(spisok)
['цвет: синий', ' вес: 1 кг', ' размер: 30х30х50', ' материал: картон']

    

Метод partition() поможет преобразовать строку в кортеж:

        >>> text = 'Python - простой и понятный язык'
>>> kort = text.partition('и')
>>> print(kort)
('Python - простой ', 'и', ' понятный язык')

    

В отличие от split(), partition() учитывает только первое вхождение элемента-разделителя (и добавляет его в итоговый кортеж).

Оценка и классификация строк

В Python много встроенных методов для оценки и классификации текстовых данных. Некоторые из этих методов работают только со строками, в то время как другие универсальны. К последним относятся, например, функции min() и max():

        >>> text = '12345'
>>> print(min(text))
1
>>> print(max(text))
5


    

В Python есть специальные методы для определения типа символов. Например, isalnum() оценивает, состоит ли строка из букв и цифр, либо в ней есть какие-то другие символы:

        >>> text = 'abracadabra123456'
>>> print(text.isalnum())
True
>>> text1 = 'a*b$ra cadabra'
>>> print(text1.isalnum())
False

    

Метод isalpha() поможет определить, состоит ли строка только из букв, или включает специальные символы, пробелы и цифры:

        >>> text = 'программирование'
>>> print(text.isalpha())
True
>>> text2 = 'password123'
>>> print(text2.isalpha())
False

    

С помощью метода isdigit() можно определить, входят ли в строку только цифры, или там есть и другие символы:

        >>> text = '1234567890'
>>> print(text.isdigit())
True
>>> text2 = '123456789o'
>>> print(text2.isdigit())
False

    

Поскольку вещественные числа содержат точку, а отрицательные – знак минуса, выявить их этим методом не получится:

        >>> text = '5.55'
>>> print(text.isdigit())
False
>>> text1 = '-5'
>>> print(text1.isdigit())
False
    

Если нужно определить наличие в строке дробей или римских цифр, подойдет метод isnumeric():

        >>> text = '½⅓¼⅕⅙'
>>> print(text.isdigit())
False
>>> print(text.isnumeric())
True

    

Методы islower() и isupper() определяют регистр, в котором находятся буквы. Эти методы игнорируют небуквенные символы:

        >>> text = 'abracadabra'
>>> print(text.islower())
True
>>> text2 = 'Python bytes'
>>> print(text2.islower())
False
>>> text3 = 'PYTHON'
>>> print(text3.isupper())
True

    

Метод isspace() определяет, состоит ли анализируемая строка из одних пробелов, или содержит что-нибудь еще:

        >>> stroka = '   '
>>> print(stroka.isspace())
True
>>> stroka2 = '  a  '
>>> print(stroka2.isspace())
False

    

Конвертация регистра

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

Из всех методов, связанных с конвертацией регистра, наиболее часто используются на практике два – lower() и upper(). Они преобразуют все символы в нижний и верхний регистр соответственно:

        >>> text = 'этот текст надо написать заглавными буквами'
>>> print(text.upper())
ЭТОТ ТЕКСТ НАДО НАПИСАТЬ ЗАГЛАВНЫМИ БУКВАМИ
>>> text = 'зДесь ВСе букВы рАзныЕ, а НУжнЫ проПИСНыЕ'
>>> print(text.lower())
здесь все буквы разные, а нужны прописные

    

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

        >>> text = 'предложение должно начинаться с ЗАГЛАВНОЙ буквы.'
>>> print(text.capitalize())
Предложение должно начинаться с заглавной буквы.

    

Методы swapcase() и title() используются реже. Первый заменяет исходный регистр на противоположный, а второй – начинает каждое слово с заглавной буквы:

        >>> text = 'пРИМЕР иСПОЛЬЗОВАНИЯ swapcase'
>>> print(text.swapcase())
Пример Использования SWAPCASE
>>> text2 = 'тот случай, когда нужен метод title'
>>> print(text2.title())
Тот Случай, Когда Нужен Метод Title

    

Поиск, подсчет и замена символов

Методы find() и rfind() возвращают индекс стартовой позиции искомой подстроки. Оба метода учитывают только первое вхождение подстроки. Разница между ними заключается в том, что find() ищет первое вхождение подстроки с начала текста, а rfind() с конца:

        >>> text = 'пример текста, в котором нужно найти текстовую подстроку'
>>> print(text.find('текст'))
7
>>> print(text.rfind('текст'))
37

    

Такие же результаты можно получить при использовании методов index() и rindex() – правда, придется предусмотреть обработку ошибок, если искомая подстрока не будет обнаружена:

        >>> text = 'Съешь еще этих мягких французских булок!'
>>> print(text.index('еще'))
6
>>> print(text.rindex('чаю'))
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
ValueError: substring not found

    

Если нужно определить, начинается ли строка с определенной подстроки, поможет метод startswith():

        >>> text = 'Жила-была курочка Ряба'
>>> print(text.startswith('Жила'))
True

    

Чтобы проверить, заканчивается ли строка на нужное окончание, используют endswith():

        >>> text = 'В конце всех ждал хэппи-енд'
>>> print(text.endswith('енд'))
True

    

Для подсчета числа вхождений определенного символа или подстроки применяют метод count() – он помогает подсчитать как общее число вхождений в тексте, так и вхождения в указанном диапазоне:

        >>> text = 'Съешь еще этих мягких французских булок, да выпей же чаю!'
>>> print(text.count('е'))
5
>>> print(text.count('е', 5, 25))
2

    

Методы strip(), lstrip() и rstrip() предназначены для удаления пробелов. Метод strip() удаляет пробелы в начале и конце строки, lstrip() – только слева, rstrip() – только справа:

        >>> text = '    здесь есть пробелы и слева, и справа    '
>>> print('***', text.strip(), '***')
*** здесь есть пробелы и слева, и справа ***
>>> print('***', text.lstrip(), '***')
*** здесь есть пробелы и слева, и справа     ***
>>> print('***', text.rstrip(), '***')
***     здесь есть пробелы и слева, и справа ***
    

Метод replace() используют для замены символов или подстрок. Можно указать нужное количество замен, а сам символ можно заменить на пустую подстроку – проще говоря, удалить:

        >>> text = 'В этой строчке нужно заменить только одну "ч"'
>>> print(text.replace('ч', '', 1))
В этой строке нужно заменить только одну "ч"

    

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

Практика

Задание 1

Напишите программу, которая получает на вход строку и выводит:

  • количество символов, содержащихся в тексте;
  • True или False в зависимости от того, являются ли все символы буквами и цифрами.

Решение:

        text = input()
print(len(text))
print(text.isalpha())

    

Задание 2

Напишите программу, которая получает на вход слово и выводит True, если слово является палиндромом, или False в противном случае. Примечание: для сравнения в Python используется оператор ==.

Решение:

        text = input().lower()
print(text == text[::-1])

    

Задание 3

Напишите программу, которая получает строку с именем, отчеством и фамилией, написанными в произвольном регистре, и выводит данные в правильном формате. Например, строка алеКСандр СЕРГЕЕВИЧ ПушкиН должна быть преобразована в Александр Сергеевич Пушкин.

Решение:

        text = input()
print(text.title())

    

Задание 4

Имеется строка 12361573928167047230472012. Напишите программу, которая преобразует строку в текст один236один573928один670472304720один2.

Решение:

        text = '12361573928167047230472012'
print(text.replace('1', 'один'))

    

Задание 5

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

Пример ввода:

        Алексей
Константинович
Романов
бухгалтер

    

Вывод:

        А. К. Романов, бухгалтер
    

Решение:

        first_name, patronymic, last_name, position = input(), input(), input(), input()
print(first_name[0] + '.', patronymic[0] + '.', last_name + ',', position)

    

Задание 6

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

Пример ввода:

        ЗонтИК
к

    

Вывод:

        True
    

Решение:

        text = input().lower()
letter = input()
print(letter in text)

    

Задание 7

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

Решение:

        vowels = 'аиеёоуыэюя'
letter = input().lower()
print(letter in vowels)

    

Задание 8

Напишите программу, которая принимает на вход строку текста и подстроку, а затем выводит индексы первого вхождения подстроки с начала и с конца строки (без учета регистра).

Пример ввода:

        Шесть шустрых мышат в камышах шуршат
ша

    

Вывод:

        16 33
    

Решение:

        text, letter = input().lower(), input()
print(text.find(letter), text.rfind(letter))

    

Задание 9

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

Пример ввода:

        В роще, травы шевеля, мы нащиплем щавеля
    

Вывод:

        Количество пробелов: 6, количество других символов: 34
    

Решение:

        text = input()
nospace = text.replace(' ', '')
print(f"Количество пробелов: {text.count(' ')}, количество других символов: {len(nospace)}")

    

Задание 10

Напишите программу, которая принимает строку и две подстроки start и end, а затем определяет, начинается ли строка с фрагмента start, и заканчивается ли подстрокой end. Регистр не учитывать.

Пример ввода:

        Программирование на Python - лучшее хобби
про
про

    

Вывод:

        True
False

    

Решение:

        text, start, end = input().lower(), input(), input()
print(text.startswith(start))
print(text.endswith(end))

    

Подведем итоги

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

***

📖 Содержание самоучителя

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
  6. Методы работы со словарями и генераторами словарей
  7. Методы работы с кортежами
  8. Методы работы со множествами
  9. Особенности цикла for
  10. Условный цикл while
  11. Функции с позиционными и именованными аргументами
  12. Анонимные функции
  13. Рекурсивные функции
  14. Функции высшего порядка, замыкания и декораторы
  15. Методы работы с файлами и файловой системой
  16. Регулярные выражения
  17. Основы скрапинга и парсинга
  18. Основы ООП: инкапсуляция и наследование
  19. Основы ООП – абстракция и полиморфизм
  20. Графический интерфейс на Tkinter

***

Материалы по теме

  • ТОП-15 трюков в Python 3, делающих код понятнее и быстрее

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти потенциал точки электрического поля
  • Windows server 2012 как найти драйвера
  • Как составить проект постройки жилого дома
  • Как найти чарт вк на компьютер
  • Как найти жижу для вейпа на вайлдберриз

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии