🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Вы устроились младшим SEO-специалистом в интернет-агентство. Ваша первая задача — помочь в оптимизации сайта клиента. Вам предоставили список ключевых слов, но он очень "грязный": в нём много мусорных слов (так называемых "стоп-слов"), таких как союзы, предлоги и общие запросы вроде "купить" или "цена", которые не несут основной смысловой нагрузки для конкретной страницы.
Ваша задача — написать программу, которая будет очищать исходную строку от этих стоп-слов и формировать из оставшихся "чистых" ключевиков новую строку, где они будут перечислены через запятую. Это поможет в дальнейшем использовать их для мета-тегов на сайте.
Техническое задание:
for, программа должна перебрать все слова.if, для каждого слова нужно проверить, не является ли оно стоп-словом. Проверка должна быть нечувствительна к регистру (т.е. "Купить" и "купить" — это одно и то же стоп-слово)., ). Если чистых слов не осталось, программа должна вывести пустую строку.Строка (string) с ключевыми словами, разделенными пробелами.
Строка (string) с отфильтрованными ключевыми словами, разделенными запятой и пробелом.
купить ноутбук asus цена в москве
ноутбук, asus, москве
Python предоставляет множество встроенных методов для работы со строками. Это мощные инструменты, которые позволяют легко манипулировать текстовыми данными. Все методы вызываются через точку после переменной, в которой хранится строка, по схеме переменная.метод().
Важно помнить, что строки в Python являются неизменяемыми. Это означает, что ни один из методов не меняет исходную строку. Вместо этого они возвращают новую строку с примененными изменениями.
1. upper() и lower()
Преобразуют все символы строки к верхнему или нижнему регистру соответственно.
string = "Hello, World!"
print(string.upper()) # Вывод: HELLO, WORLD!
print(string.lower()) # Вывод: hello, world!
print(string) # Вывод: Hello, World! (исходная строка не изменилась)
Полезный совет: Эти методы незаменимы, когда нужно сравнить строки без учета регистра. Например, при проверке пользовательского ввода.
user_input = "Да"
if user_input.lower() == "да":
print("Пользователь согласен.")
2. strip(), lstrip() и rstrip()
Удаляют пробельные символы (пробелы, табы, переносы строк) с начала и конца строки. lstrip() удаляет только слева, а rstrip() — только справа.
string = " Hello, World! "
print(string.strip()) # Вывод: Hello, World!
print(string.lstrip()) # Вывод: Hello, World!
print(string.rstrip()) # Вывод: Hello, World!
Полезный совет: Это крайне важные методы для "очистки" данных, полученных из файлов или от пользователей, которые часто случайно оставляют лишние пробелы. В качестве аргумента можно передать строку из символов, которые нужно удалить.
dirty_string = "!!!Hello, World!?! "
print(dirty_string.strip(" !?")) # Вывод: Hello, World
3. split() и join()
split() разделяет строку на список подстрок по указанному разделителю. join() собирает строку из элементов списка, вставляя между ними строку-разделитель.
string = "Hello, World!"
words = string.split(", ")
print(words) # Вывод: ['Hello', 'World!']
# Обратная операция
joined_string = " | ".join(words)
print(joined_string) # Вывод: Hello | World!
Полезный совет: split() — это стандартный способ для парсинга (разбора) данных, представленных в виде строки, например, CSV-файлов. join() является наиболее эффективным ("pythonic") способом собрать одну большую строку из множества мелких, он работает гораздо быстрее, чем сложение строк в цикле через +.
4. find() и replace()
find() ищет первое вхождение подстроки и возвращает ее индекс (позицию). Если подстрока не найдена, возвращает -1. replace() заменяет все вхождения одной подстроки на другую.
string = "Hello, World!"
index = string.find("World")
print(index) # Вывод: 7
new_string = string.replace("World", "Python")
print(new_string) # Вывод: Hello, Python!
Полезный совет: Существует аналог метода find() — index(). Он делает то же самое, но если подстрока не найдена, он вызывает ошибку ValueError. Используйте find(), если отсутствие подстроки — нормальная ситуация, и index(), если это должно прервать выполнение программы. Метод replace() также может принимать третий аргумент — количество замен, которые нужно сделать.
5. startswith() и endswith()
Проверяют, начинается или заканчивается ли строка определенной подстрокой. Возвращают True или False.
string = "Hello, World!"
print(string.startswith("Hello")) # Вывод: True
print(string.endswith("World!")) # Вывод: True
print(string.startswith("Bye")) # Вывод: False
Полезный совет: Очень удобно для быстрой проверки форматов файлов (filename.endswith(".txt")) или типов ссылок (url.startswith("https")).
6. isdigit(), isalpha() и isalnum()
Проверяют, из чего состоит строка.
isdigit(): True, если все символы — цифры.isalpha(): True, если все символы — буквы.isalnum(): True, если все символы — буквы или цифры.string1 = "12345"
string2 = "Hello"
string3 = "Hello123"
print(f"'{string1}' состоит из цифр? {string1.isdigit()}") # Вывод: True
print(f"'{string2}' состоит из букв? {string2.isalpha()}") # Вывод: True
print(f"'{string3}' состоит из букв и цифр? {string3.isalnum()}") # Вывод: True
print(f"'{string2}' состоит из цифр? {string2.isdigit()}") # Вывод: False
Полезный совет: Эти методы идеально подходят для валидации (проверки корректности) пользовательского ввода перед тем, как пытаться преобразовать строку в число или использовать ее дальше в программе.
Ниже представлена таблица с более полным списком строковых методов для быстрого ознакомления.
| Метод | Назначение |
|---|---|
S.find(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер первого вхождения или -1. |
S.rfind(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер последнего вхождения или -1. |
S.index(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError. |
S.rindex(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError. |
S.replace(шаблон, замена[, maxcount]) |
Замена шаблона на замену. maxcount ограничивает количество замен. |
S.split(символ) |
Разбиение строки по разделителю. |
S.isdigit() |
Состоит ли строка из цифр. |
S.isalpha() |
Состоит ли строка из букв. |
S.isalnum() |
Состоит ли строка из цифр или букв. |
S.islower() |
Состоит ли строка из символов в нижнем регистре. |
S.isupper() |
Состоит ли строка из символов в верхнем регистре. |
S.isspace() |
Состоит ли строка из неотображаемых символов (пробел, \f, \n, \r, \t, \v). |
S.istitle() |
Начинаются ли слова в строке с заглавной буквы. |
S.upper() |
Преобразование строки к верхнему регистру. |
S.lower() |
Преобразование строки к нижнему регистру. |
S.startswith(str) |
Начинается ли строка S с шаблона str. |
S.endswith(str) |
Заканчивается ли строка S шаблоном str. |
S.join(список) |
Сборка строки из списка с разделителем S. |
ord(символ) |
Преобразует символ в его код ASCII/Unicode. |
chr(число) |
Преобразует код ASCII/Unicode в символ. |
S.capitalize() |
Переводит первый символ строки в верхний регистр, а все остальные в нижний. |
S.center(width, [fill]) |
Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию). |
S.count(str, [start],[end]) |
Возвращает количество непересекающихся вхождений подстроки. |
S.expandtabs([tabsize]) |
Заменяет символы табуляции \t пробелами. |
S.lstrip([chars]) |
Удаление указанных символов (или пробельных) в начале строки. |
S.rstrip([chars]) |
Удаление указанных символов (или пробельных) в конце строки. |
S.strip([chars]) |
Удаление указанных символов (или пробельных) в начале и в конце строки. |
S.partition(шаблон) |
Разделяет строку по первому вхождению разделителя на три части: до, сам разделитель, после. |
S.rpartition(sep) |
Разделяет строку по последнему вхождению разделителя на три части: до, сам разделитель, после. |
S.swapcase() |
Переводит символы нижнего регистра в верхний, а верхнего – в нижний. |
S.title() |
Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний. |
S.zfill(width) |
Дополняет строку нулями слева до длины width. |
S.ljust(width, fillchar=" ") |
Выравнивает строку по левому краю, дополняя справа символами fillchar. |
S.rjust(width, fillchar=" ") |
Выравнивает строку по правому краю, дополняя слева символами fillchar. |
S.format(*args, **kwargs) |
Форматирование строки (более современная альтернатива %). |
# Список стоп-слов, которые нужно удалить. Он задан прямо в коде.
stop_words = ["купить", "цена", "сколько", "стоит", "в", "и", "с", "на"]
# Получаем строку с ключевыми словами от пользователя
keywords_input = input()
# Разделяем полученную строку на отдельные слова по пробелу. Результатом будет список слов.
words = keywords_input.split()
# Создаем пустой список, куда будем складывать "чистые" ключевые слова
clean_words = []
# Запускаем цикл, который перебирает каждое слово в списке 'words'
for word in words:
# Приводим слово к нижнему регистру для корректного сравнения со списком stop_words
# и проверяем, НЕ содержится ли оно в списке стоп-слов.
if word.lower() not in stop_words:
# Если слово не является стоп-словом, добавляем его в наш список 'clean_words'
clean_words.append(word)
# Используем метод join, чтобы объединить все элементы списка 'clean_words' в одну строку.
# В качестве разделителя указываем ", " (запятая и пробел).
result = ", ".join(clean_words)
# Выводим итоговую строку на экран
print(result)
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...