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. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая нормализует таблицу адресов:

  1. Читает из stdin целое число n — количество строк.
  2. Читает следующие n строк; каждая содержит один токен — «грязный» адрес (строка, которая может начинаться и заканчиваться пробелами, содержать буквы в произвольном регистре и дефисы вместо пробелов между словами). Токен считывается через input() — пробелы внутри токена сохраняются.
  3. Создаёт pd.Series с именем raw из прочитанных строк.
  4. Создаёт pd.Series с именем step1 — результат .str.strip() на raw.
  5. Создаёт pd.Series с именем step2 — результат .str.lower() на step1.
  6. Создаёт pd.Series с именем step3 — результат .str.replace('-', ' ', regex=False) на step2.
  7. Выводит в stdout ровно три строки:
  • Строка 1: значения step1 через | (пробел-вертикальная черта-пробел).
  • Строка 2: значения step2 через |.
  • Строка 3: значения step3 через |.

Запрещено использовать Python-циклы для шагов 4–7.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

Первая строка — целое число n (1 ≤ n ≤ 10).
Следующие n строк — адреса; каждый адрес — одна строка, возможно с пробелами по краям и дефисами внутри.

Формат вывода

Ровно три строки. Значения внутри строки разделяются |.

Пример

Ввод
3
  Ленина-Улица 
  САДОВОЕ-Кольцо  
 Арбат-ПЛОЩАДЬ 
Вывод
Ленина-Улица | САДОВОЕ-Кольцо | Арбат-ПЛОЩАДЬ
ленина-улица | садовое-кольцо | арбат-площадь
ленина улица | садовое кольцо | арбат площадь
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи