Строка Python — это тип данных, используемый для представления текста. Это неизменяемая последовательность символов Юникода. Строки можно создавать, заключая текст в одинарные(‘ ‘), двойные(” “) или тройные(”’ ”’ или “”” “””) кавычки.
String1 = 'Welcome to PythonGuides!' String2 = "Hello, Programmer!" String3 = '''Hello, Programmer!''' String4 = """Hello, Programmer!""" print(type(String1)) print(type(String2)) print(type(String3)) print(type(String4))
Выход: проверка типов каждой созданной нами переменной.
Все созданные нами переменные имеют строковый тип данных в Python.
Хотя это правда, что строки в Python неизменяемы (это означает, что мы не можем изменить существующую строку на месте), мы всегда можем создать новую строку, которая представляет желаемую модификацию исходной строки.
- Методы
- Метод 1: с помощью нарезки строк
- Случай 1: используя нарезку строки
- Случай 2: удаление нескольких символов из строки в известных позициях
- Способ 2: с помощью цикла for
- Метод 3: с помощью метода replace()
- Метод 4: для удаления символа из строки
- Метод 5: с помощью метода Translate()
- Метод 6: с помощью регулярного выражения
- Метод 7: используйте методы Split() и join()
- Метод 8: с помощью функции filter()
- Метод 9: удаление нескольких символов из строки
- Случай 1: использование функции Strip() для удаления буквы из строки
- Случай 2: с помощью функции lstrip()
- Случай 3: с помощью функции rstrip()
Методы
В Python существует несколько различных методов для удаления нескольких символов из строки Python. Давайте рассмотрим их поочередно на наглядных примерах.
Метод 1: с помощью нарезки строк
Нарезка строк в Python позволяет нам извлекать части строки на основе индексов.
Синтаксис:
string[start:stop:step]
Имя | Описание |
---|---|
start | Начальный индекс среза. Его значение по умолчанию — 0. |
stop | Срез доходит до этого индекса, но не включает его. Его значение по умолчанию — конец строки. |
step | Количество индексов между элементами в срезе. Его значение по умолчанию — 1. |
Чтобы удалить определенные символы с помощью срезов, мы обычно объединяем срезы, пропуская нежелательные символы.
Случай 1: используя нарезку строки
Если мы знаем индекс символа, который хотим удалить, мы можем сделать это, объединив два фрагмента: один фрагмент перед нежелательным символом и один фрагмент после в строке Python.
Например, давайте рассмотрим сценарий, в котором у нас есть строка в Python, представляющая почтовый индекс местоположения в США. Почтовые индексы в США обычно состоят из 5 цифр.
В этом примере предположим, что мы хотим удалить дефис(-) из формата ZIP+4, чтобы сделать его непрерывным 9-значным числом.
zip_code = "12345-6789" new_zip = zip_code[:5] + zip_code[6:] print(new_zip)
Вывод: в этой строке Python дефис находится на 5-й позиции(помните, Python использует индексацию с отсчетом от 0). Чтобы удалить дефис, мы можем взять все символы перед ним и все символы после него, а затем объединить их вместе. Объединив эти две подстроки, мы эффективно удаляем дефис.
123456789
Случай 2: удаление нескольких символов из строки в известных позициях
Чтобы удалить несколько символов из строки Python, мы можем создать несколько фрагментов, которые «перепрыгивают» через каждый нежелательный символ, а затем объединяют эти фрагменты вместе. Каждый фрагмент захватывает те части строки Python, которые мы хотим сохранить.
Например, предположим, что у нас есть номер телефона типа «(123) – 456 – 7890», и мы хотим удалить лишние пробелы и тире, чтобы получить его в нужном формате(123) 456-7890.
Phone_number = "(123) - 456 - 7890" formatted_number = Phone_number[1:4] + Phone_number[8:11] + Phone_number[14:] print(formatted_number)
Вывод: в этом примере мы использовали нарезку строк Python, чтобы сохранить нужные нам части исходной строки Python и пропустить ненужные символы.
1234567890
Способ 2: с помощью цикла for
Удаление нескольких символов из строки с помощью цикла for обычно включает в себя перебор строки и проверку каждого символа, чтобы определить, следует ли его сохранить или отбросить. После определения мы можем построить новую строку с нужными символами.
Пример: на ежегодном хакатоне технологической компании программистам предлагается придумать небольшие забавные проекты, чтобы продемонстрировать свои навыки. Итак, мы решили создать программу, которая удаляет гласные из строки, хранящейся в Python.
s = "Hello, welcome to PythonGuides.com" chars_to_remove = "aeiou" new_str = "" for char in s: if char not in chars_to_remove: new_str += char print(new_str)
Вывод: мы используем цикл for для перебора строки, а затем с помощью условного оператора проверяем наличие гласных.
Hll, wlcm t PythnGds.cm
Таким образом, мы используем цикл for для удаления нескольких символов из строки Python.
Метод 3: с помощью метода replace()
Метод replace() в Python используется для замены подстроки строки другой подстрокой.
Основной синтаксис этого метода:
string.replace(old, new, count)
Имя | Описание |
---|---|
old | Это подстрока, которую мы хотим заменить. |
new | Это подстрока, которую мы заменим на старую. |
count | (необязательно) — максимальное количество вхождений для замены. Если этот параметр опущен или отсутствует, все вхождения будут заменены. |
Однако метод replace() предназначен для замены одной подстроки за раз. Если мы хотим удалить несколько символов(или подстрок) из строки в Python с помощью replace(), нам придется вызывать этот метод несколько раз, либо используя цепочки вызовов, либо посредством итерации.
Пример: представьте, что мы извлекли текст с веб-сайта о самых популярных туристических направлениях США. Однако из-за некоторых проблем с форматированием во время извлечения были включены некоторые нежелательные символы или символы. Наша задача — очистить этот текст.
text = "The top destinations in the USA are: [New York City], {Los Angeles}, and, |Miami|." chars_to_remove = ['[', ']', '{', '}', '', '|'] for char in chars_to_remove: text = text.replace(char, '') print(text)
Вывод: мы замечаем, что названия городов окружены нежелательными символами: [ ], { }, и | | и нам нужно удалить эти несколько символов из этой строки Python. Начиная с начальной строки, мы перебираем список символов, которые нужно удалить.
The top destinations in the USA are: New York City, Los Angeles, San Francisco and, Miami.
Метод 4: для удаления символа из строки
Процесс использования генератора списка для удаления символов включает в себя разбиение строки Python на список символов, фильтрацию нежелательных символов с помощью генератора списка, а затем повторную сборку строки в Python.
Например, представьте, что мы готовим отчет по списку штатов США, принявших участие в определенном опросе. Мы получаем список в строке Python, но, к сожалению, строка содержит некоторые нежелательные символы(например, цифры и специальные символы). Нам нужно удалить эти посторонние символы, чтобы иметь четкий список состояний с помощью программы Python.
States = "Califor1nia, Nev*ada, 3Oregon, 45Utah, Ar#izona" list_of_chars = [char for char in States] filtered_chars = [char for char in list_of_chars if char.isalpha() or char == ' ' or char == ','] clean_states_list = ''.join(filtered_chars) print(clean_states_list)
Вывод: мы будем использовать метод Python str.isalpha(), который возвращает True, если символ является буквой, и False в противном случае. Мы также разрешим использование пробелов и запятых, чтобы состояния оставались разделенными.
Используя понимание списка, мы перебрали каждый символ исходной строки. Мы отфильтровали нежелательные символы, убедившись, что каждый символ в новом списке представляет собой букву, пробел или запятую. Наконец, мы использовали метод join(), чтобы объединить список отфильтрованных символов обратно в чистую строку.
California, Nevada, Oregon, Utah, Arizona
Метод 5: с помощью метода Translate()
Метод строк Translate() в Python — это мощный инструмент для выполнения преобразований на уровне символов, а в сочетании с функцией maketrans() он становится универсальным методом удаления и замены символов.
Метод Translate() возвращает строку, в которой некоторые указанные символы заменены символами, описанными в таблице перевода. Эта таблица перевода обычно создается с помощью метода str.maketrans(). Может принимать до трёх аргументов:
Имя | Описание |
---|---|
х | Если указан только один аргумент, это должен быть словарь с порядковыми номерами Юникода(целыми значениями) в качестве ключей и их заменой в качестве значений. |
х и у | Если указаны два аргумента, они должны быть строками одинаковой длины. Каждый символ в x будет заменен символом в той же позиции в y. |
х, у и g | Если указаны три аргумента, каждый символ в третьем аргументе z сопоставляется со значением None. |
Список аргументов, принимаемых методом str.maketrans() в Python.
Например, представьте, что у нас есть строка в Python, которая представляет список фильмов и их кассовые сборы в миллионах. Список представлен в виде разделенных запятыми пар названий фильмов и их кассовых сборов.
Однако по какой-то причине в кассовые сборы попали знак доллара($) и запятые(,). Наша цель — удалить эти ненужные символы, чтобы облегчить обработку чисел.
movies_data = "The Avengers $1,234.56m, Star Wars: The Force Awakens $987,654.32m" remove_chars = "$," translation_table = str.maketrans('', '', remove_chars) cleaned_data = movies_data.translate(translation_table) print(cleaned_data)
Вывод: у нас есть строка Python remove_chars, содержащая символы, которые мы хотим удалить, а именно($) и(,). Мы используем str.maketrans (», », Remove_chars) для создания таблицы перевода. Эта таблица по сути сопоставляет символы($) и(,) со значением None.
Затем мы вызываем функцию Translate() для нашей строки Movies_data, передавая таблицу перевода. Это вернет новую строку с указанными символами, удаленными в Python.
The Avengers 1234.56m Star Wars: The Force Awakens 987654.32m
Метод 6: с помощью регулярного выражения
Регулярные выражения — мощный инструмент обработки текста. Они позволяют выполнять сопоставление с образцом и сложные манипуляции со строками в Python.
В Python модуль re предоставляет функции и классы для работы с регулярными выражениями. Одной из наиболее часто используемых функций модуля re является re.sub(), которая заменяет подстроки, соответствующие заданному шаблону.
Например, мы управляем отзывами клиентов магазина техники в Кремниевой долине с помощью Python. Иногда клиенты ссылаются в комментариях на коды городов «408» и «650». В целях конфиденциальности мы решили удалить эти ссылки на коды городов перед публикацией отзыва.
import re feedback = "The product is great. But can you call me back at 408?\nI had issues with the device. My area code is 650." filtered_feedback = re.sub('408|650', '', feedback) print(filtered_feedback)
Выход:
The product is great. But can you call me back at ? I had issues with the device. My area code is .
Метод 7: используйте методы Split() и join()
Метод Split() в основном используется для разделения строки на основе указанного разделителя. Он возвращает список подстрок в Python. А метод join() — это строковый метод, который принимает список строк и объединяет их в одну строку в Python.
Например, представьте, что у нас есть сеть ресторанов по всей территории США. Мы собираем отзывы клиентов посредством онлайн-обзоров. Эти обзоры хранятся в строках в Python и часто содержат лишние знаки препинания, которые мы хотели бы удалить, чтобы упростить анализ текста.
def clean_review(review): chars_to_remove = ['!', '?', '.'] for char in chars_to_remove: review = ''.join(review.split(char)) return review review = "The burger was amazing! However, the service was slow. Would visit again?" cleaned_review = clean_review(review) print(cleaned_review)
Вывод: операция удаления перебирает все символы в строке и в конце все объединяется в новую строку в Python.
The burger was amazing However, the service was slow Would visit again
Метод 8: с помощью функции filter()
Функция filter() в Python позволяет фильтровать элементы итерации на основе функции, возвращающей True или False. Для строк Python это можно использовать для фильтрации(или сохранения) определенных символов.
Например, представьте, что мы работаем с Департаментом транспортных средств (DMV) США. DMV предоставляет нам список номерных знаков на Python, но из-за системной ошибки на некоторых номерных знаках присутствуют нежелательные символы(*, #, & и @). Нам поручено очистить эти номерные знаки с помощью Python.
def remove_unwanted_chars(plate): unwanted_chars = ['*', '#', '&', '@'] return ''.join(filter(lambda char: char not in unwanted_chars, plate)) license_plate = "AB*#12@34" cleaned_license_plate = remove_unwanted_chars(license_plate) print(cleaned_license_plate)
Вывод: в этом примере мы создали лямбда-функцию, которая будет проверять каждый символ в строке, затем функция filter() будет фильтровать все проверенные символы и, наконец, функция join() объединит все символы строки. в одну строку.
AB1234
Метод 9: удаление нескольких символов из строки
В Python метод Strip() в основном используется для удаления начальных и конечных символов (пробелов по умолчанию) из строки Python. Однако функцию Strip() также можно использовать для удаления других начальных и конечных символов, указав набор удаляемых символов.
Случай 1: использование функции Strip() для удаления буквы из строки
В этом случае мы удалим символы из первой и последней строки в Python. И мы можем использовать функцию Split() для удаления нескольких символов из строки Python.
Например, представьте, что мы обрабатываем данные из старой базы данных, а имена состояний в адресах хранятся в двух полосах(|) и других специальных символах. Например, Нью-Йорк обозначается как *#*|NY|*#. И мы хотим удалить эти полосы(|) и другие специальные символы.
address_old_format = "*#*|NY|*#" cleaned_address = address_old_format.strip('*#|') print(cleaned_address)
Вывод: символы удаляются с обеих сторон строки Python.
NY
Случай 2: с помощью функции lstrip()
Функция lstrip() предназначена для удаления всех вхождений указанных символов из левой части строки до тех пор, пока не встретится символ, отсутствующий в наборе, предусмотренном в Python. Он не удаляет определенное количество символов, если только эти символы не соответствуют заданному набору.
Например, представьте, что мы работаем со списком номеров ISBN книг в базе данных библиотеки США через Python. Эта библиотека использует уникальную систему, в которой номера ISBN авторов из США начинаются с «US», за которым следует фактический ISBN. Нам нужно удалить префикс «США» из номеров ISBN, но только если они существуют.
isbn_with_prefix = "US1234567890" isbn_without_prefix = isbn_with_prefix.lstrip("US") print(isbn_without_prefix)
Вывод: здесь мы просто использовали функцию lstrip() в Python для удаления символов из строки Python.
1234567890
Таким образом, мы можем удалить первые два символа из строки в Python с помощью функции lstrip().
Случай 3: с помощью функции rstrip()
Функция rstrip() используется для удаления конечных символов с правой стороны строки в Python.
Например, в некоторых базах данных почтовые индексы были ошибочно введены с дополнительным двухбуквенным сокращением штата, добавленным в конце, и мы хотим удалить эти последние два символа, если они являются буквами.
def clean_zip(zip_code): if zip_code[-2:].isalpha(): return zip_code.rstrip(zip_code[-2:]) return zip_code zip_with_state = "12345NY" cleaned_zip = clean_zip(zip_with_state) print(cleaned_zip)
Вывод: здесь мы определяем функцию (clean_zip) в Python, где мы будем удалять несколько символов из строки Python. Мы используем условный оператор if с разрезанием строк и функцию isalpha().
12345
Таким образом, мы можем использовать функцию rstrip() для удаления последних двух символов из строки в Python.