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
Помогите пожалуйста составить программу #Пользователь вводит строку произвольной длины.
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 |
|||
понимаю так?
0 |
Автоматизируй это! 7067 / 4382 / 1178 Регистрация: 30.03.2015 Сообщений: 12,822 Записей в блоге: 29 |
|
14.08.2019, 17:57 |
6 |
проверяющая система она тебе зачем, если ты не знаешь питона? Добавлено через 1 минуту
s=input(«Строка:») ну что-то вроде, не говори только, что не принимает
0 |
0 / 0 / 0 Регистрация: 05.06.2018 Сообщений: 5 |
|
14.08.2019, 17:58 [ТС] |
7 |
да в том то и дело, питона не касался) а в универе решили математиков поучить питону
0 |
Автоматизируй это! 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 для проверки того, содержит ли аргумент все пробельные символы, такие как:
- ‘ ‘ — Space
- ‘t’ – Horizontal tab
- ‘n’ — Newline
- ‘v’ — Vertical tab
- ‘f’ — Feed
- ‘r’ — Carriage return.
Содержание
- Что такое функция string isspace() в Python?
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры программ с методом 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))
Подведем итоги
В этой части мы рассмотрели самые популярные методы работы со строками – они пригодятся для решения тренировочных задач и в разработке реальных проектов. В следующей статье будем разбирать методы работы со списками.
***
📖 Содержание самоучителя
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
- Основы ООП – абстракция и полиморфизм
- Графический интерфейс на Tkinter
***
Материалы по теме
- ТОП-15 трюков в Python 3, делающих код понятнее и быстрее