pandas str.strip, lower и replace: очистка строк без циклов
Строковые методы pandas доступны через .str: strip удаляет пробелы по краям, lower меняет регистр, replace заменяет текст. Их можно применять ко всему столбцу без цикла по строкам.
У каждой операции своя задача
strip не удаляет пробелы внутри строки. lower не исправляет дефисы или опечатки. Для буквальной замены используйте str.replace(old, new, regex=False), чтобы специальные символы не воспринимались как регулярное выражение.
Перед объединением таблиц одинаковые ключи полезно привести к одному формату. Сохраните исходный столбец, если нужна проверка изменений: разные реальные значения могут совпасть после слишком агрессивной очистки.
Пример на других данных
import pandas as pd
s = pd.Series([" NORTH-West ", "South-East "], dtype="string")
clean = s.str.strip().str.lower().str.replace("-", " ", regex=False)
print(clean.tolist())
Результат:
['north west', 'south east']
Попробуйте сами
Ниже — отдельное упражнение: напишите код и запустите проверку. Другие упражнения по этой теме. Для обучения по порядку откройте бесплатный курс NumPy и pandas.
Нормализация адресов: strip, lower и replace без циклов
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая нормализует таблицу адресов:
- Читает из
stdinцелое числоn— количество строк. - Читает следующие
nстрок; каждая содержит один токен — «грязный» адрес (строка, которая может начинаться и заканчиваться пробелами, содержать буквы в произвольном регистре и дефисы вместо пробелов между словами). Токен считывается черезinput()— пробелы внутри токена сохраняются. - Создаёт
pd.Seriesс именемrawиз прочитанных строк. - Создаёт
pd.Seriesс именемstep1— результат.str.strip()наraw. - Создаёт
pd.Seriesс именемstep2— результат.str.lower()наstep1. - Создаёт
pd.Seriesс именемstep3— результат.str.replace('-', ' ', regex=False)наstep2. - Выводит в
stdoutровно три строки:
- Строка 1: значения
step1через|(пробел-вертикальная черта-пробел). - Строка 2: значения
step2через|. - Строка 3: значения
step3через|.
Запрещено использовать Python-циклы для шагов 4–7.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
Первая строка — целое число n (1 ≤ n ≤ 10).
Следующие n строк — адреса; каждый адрес — одна строка, возможно с пробелами по краям и дефисами внутри.
Формат вывода
Ровно три строки. Значения внутри строки разделяются |.
Пример
- Ввод
3 Ленина-Улица САДОВОЕ-Кольцо Арбат-ПЛОЩАДЬ
- Вывод
Ленина-Улица | САДОВОЕ-Кольцо | Арбат-ПЛОЩАДЬ ленина-улица | садовое-кольцо | арбат-площадь ленина улица | садовое кольцо | арбат площадь
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Текстовые столбцы: нормализация и разбор через .str — задача по NumPy и pandas
- pandas str.split и str.contains: фильтрация по домену email
- pandas: количество пропусков по столбцам — задача
- Описание схемы DataFrame: dtype, пропуски и уникальные значения
- pandas Series из словаря: index, shape и dtype
- pandas DataFrame из списка словарей: пример и задача
