Сегодня мы изучим некоторые приёмы для работы со строками и с текстом. Очень много программ созданы для того чтобы работать с текстами- как-то преобразовывать их, изменять, анализировать. Любой текст можно представить либо как одну длинную очень строку, либо разбить его по предложениям или абзацам и получить на выходе список(массив) строк.
Начнём с простейших функций для обработки текстовых строк.
Замена подстроки в строке
В одном советском анекдоте, Крокодилу Гене и Чебурашке учительница поручила написать сочинение "Как я провёл лето". Проблема была в том, что всё лето друзья пили водку. Пришлось сперва написать как есть, а потом заменить некоторые слова. Давайте поможем сказочным героям. Для этого мы используем функцию replace, которая работает так
s=s.replace('строка которую заменяем', 'строка вместо неё')
Длинные тексты, разбитые на несколько строк можно поместить в одну строку, заключив их в три одинарные кавычки с каждой стороны строки.
Программа выдаёт результат:
Как видим, теперь сочинение Чебурашки и Гены успешно пройдет проверку строгой учительницы.
Иногда функцию replace можно использовать, чтобы удалить какие-то слова из строки, заменив их на пустую строку(просто открыть и закрыть кавычку - будет пустая строка). Например, давайте полностью удалим из какого-то текста слово 'какашка'.
Программа напечатает
Мы удалили из текста плохое слово, заменив его на пустую строку.
Получение части строки
Извлечь из строки какой-то отрезок(срез), можно указав начальную и конечную позицию подстроки через двоеточие, в квадратных скобках после имени переменной. Позиция начинается с нуля. Поясним на примере.
s='Меня зовут Бонд, Джеймс Бонд'
a=s[0, 4]
print(a)
Напечатает подстроку:
Меня
s='Меня зовут Бонд, Джеймс Бонд'
a=s[10:15]
print(a)
Напечатает подстроку:
Бонд
Предположим у нас есть несколько строк в списке, и какие то из них начинаются на строку 'http'(то есть являются ссылками на веб страницы). Нам нужно найти их в списке, и вывести на экран. Для того чтобы их найти, нам нужно получить часть строки с первого по четвёртый символы, и если это 'http', то вывести эту строку на экран. Составим программу, которая перебирает строки из списка и ищет те, которые начинаются с 'http'.
В результате работы программы увидим:
Поиск подстроки в строке
Для того чтобы определить наличие подстроки в строке, можно использовать функцию find. Работает она так -
n=s.find('строка которую ищем')
Если искомая подстрока имеется в строке,то в переменную n попадёт её позиция в строке, а если подстрока не будет найдена n станет равно -1.
Давайте попробуем определить есть ли в строке адрес электронной почты с mail.ru. Для этого попробуем найти в строке подстроку '@mail.ru'
Программа выведет на экран:
В следующих уроках мы продолжим работать со строками, и узнаем еще несколько полезных функций. Подписывайтесь на мой блог!
Было бы очень интересно читать как применять Питон для решения различных задач. Описание как работать со строками и словарями есть в каждой книге...
И, пожалуйста, оформляйте код текстом с помощью форматирования markdown. Это будет и удобно (можно копипастить) и текст навсегда останется в блокчейне и никогда не потеряется (в отличии от картинок на вашем хостинге).
Сейчас отпишусь в гите
Уважаемый @maxkoud я обязательно дойду до описания решения практически полезных задач на питоне, но начинаю все-таки с простейших уроков, с нуля.
Насчет оформления кода текстом - я сперва так и делал (посмотрите мои первые уроки в блоге), но после нескольких случаев удаления почти всей статьи при редактировании поста в результате глюков встроенного редактора на голосе ио, я настолько был взбешен и огорчен (мне пришлось заново набирать статьи), что решил отныне выкладывать код в виде скриншотов на свой хостинг. К тому же были ужасные проблемы с форматированием четырех пробелов в коде питона. Я рад бы использовать текстовый вариант примеров кода, но из-за глючного редактора, и самоудалении текста статей при редактировании поста, отказался от этой затеи.
Ясно...
Но Вы же программист. Отпишитесь о баге на Гитхабе, разработчики Голоса очень отзывчивые ;)
Я думал баг общеизвестный (кто-то в комментах тут тоже его упоминал)
я тут мимо проходилв последнем примере вы всё таки ищите а не емайл а строку в виде @mail.ru и для позиции емайла даете, внезапно, позицию собаки. а позицией емайла будут всё же координаты последнего пробела
во вторых
SyntaxError: invalid syntax (<string>, line 3)
И для себя сохраню ссылку так же вкуснее код для обучения там выглядит живее))
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
t3ran13, svetlanaaa, vik, tandemus, tristamoff, alexux, voltash, vika-teplo, kondratij, bombo, makcum52, novy, nerengot, wind33, vealis, ksantoprotein, verdon, chupaaa
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
как дополнительный материал
Брайсон Пэйн «Python для детей и родителей» Эксмо, 2017 год, 352 стр.
Спасибо за комментарий )) Не читал эту книгу, но думаю новичкам будет полезно!
Добрый день, можно ли с вами связаться в telegram? Возникли вопросы по питону
@maxkoud Я покраснел от стыда, и утопился в слезах от осознания ущербности )) Шучу. Да надо бы уже мне зарегиться в этом детище Дурова. Я вообще мало пользуюсь мессенджерами, но раз стыдно, то пойду региться ))
Мне кажется вы должны знать IRC или Jabber.
Так вот общие чаты в ТГ вызывают ностальгические чувства о том времени :]
https://t.me/golos_io - чат Голоса, можно обсудить новости проекта или пожаловаться на баги и проблемы.
@golosnotifybot - это бот который присылает уведомления от Golos.io, очень удобно!
К сожалению в телеграме меня нет пока что )) Но можете написать мне на [email protected]
Это я в телеграме сейчас регнулся (https://t.me/pythono)
Стыдно в наше время не использовать ТГ!
Тем более мощный API позволяет использовать ботов как интерфейс взаимодействия со скриптами ;)
А как насчёт попутной идеи составить список - лучше бы уже со ссылками на скачивание - толковых самоучителей Python на русском. Естественно, с указанием версии языка.
Полагаю, благодарны бы были многие - толковых книг по языкам программирования на русском, мягко говоря, не переизбыток
Так я уже составлял - http://pythono.ru/python-books/
Мои извинения за невнимательность, уважаемый @pythono!
)) Вы не обязаны были знать о моём сайте поэтому невнимательность тут не при чём. Я сегодня как раз думал про то что неплохо было бы сделать пост на голосе с подборкой книг по питону, но так как подобная статья есть на моём сайте, я опасаюсь что получится нечто вроде копипасты.
Программист, который не может прочитать книгу на английском языке никогда не станет хорошим.
Возможно, уважаемый @maxkoud. Хотя синтаксис любого языка программирования довольно ограничен и не требует обязательного знания английского на хорошем уровне. А вот чтение учебника (самоучителя) напротив, как раз-таки требует.
А у нас, ведь, и с русским-то зачастую проблемы немалые. Впрочем, хорошее знание английского никому не мешает :-))
Начинающие программисты могут и на русском читать )) У меня подборка книг именно для полных новичков на сайте ))
Конечно я раньше сидел в Jabber. Эх надо зарегиться в телеграме, хватит разговоров, я пошел региться ))