Автор оригинала: Shubham Sayon.
Проблема: Учитывая строку; Как разделить/вырезать строку и извлечь требуемые символы?
В этой статье мы будем обсуждать некоторые Интересные сценарии которые позволяют нам разделить или вырезать строку и извлечь необходимую часть строки, которая нам нужна. Давайте погрузимся в каждый пример/сценарий и посмотрим, как мы можем успешно отрезать строку на основе требований в каждом сценарии.
✨ Сценарий 1.
Постановка проблемы
Учитывая следующую строку:
s = 'http://www.example.com/?s=something&two=20'
Требование:
Вы должны разделить строку такую, что бы ни было после &
В данной строке («URL») пренебрегают, то есть выходная строка должна быть следующей:
s = 'http://www.example.com/?s=something
◈ Метод 1: использование метода SPLIT ()
Сплит ()
Это встроенный метод в Python, который используется для вырезания/разделения заданной строки на основе данного сепаратора. Вы можете указать любой сепаратор в соответствии с вашими требованиями, однако по умолчанию сепаратор является пробелом.
Синтаксис:
- разделитель является необязательным параметром, который используется для указания сепаратора (разделителей). По умолчанию это любой персонаж пробела.
- maxsplit Необязательный параметр, который позволяет нам указывать максимальное количество расщеплений, которое мы хотим выполнить. По умолчанию его значение – -1 Это «все вхождения».
Решение : Вы можете использовать Сплит ()
Способ и укажите сепаратор на основе которого вы хотите разрезать строку, а затем извлечь раздел строки из списка, создаваемого Сплит ()
функция. Давайте посмотрим на то, как это может быть реализовано в следующем куске кода:
s = 'http://www.example.com/?s=something&two=20' print(s.split('&')[0])
Выход:
http://www.example.com/?s=something
◈ Метод 2: Использование метода RFind () и нарезка строки
Нам нужно извлечь часть строки, которая находится до &
персонаж. Поэтому простая работа для нашей проблемы состоит в том, чтобы найти индекс &
персонаж в строке с помощью RFind ()
Функция, а затем нарезать строку с помощью индекса.
Примечание: RFind ()
Метод используется для поиска последнего возникновения указанного значения.
Решение
s = 'http://www.example.com/?s=something&two=20' print(s[:s.rfind('&')])
Выход:
http://www.example.com/?s=something
◈ Метод 3: Использование метода index ()
Другой простой подход к сокращению данной строки – это нарезать его с помощью метода индекса. Индекс (значение)
Метод возвращает индекс ценность
аргумент Давайте посмотрим на процедуру для реализации Индекс (значение)
Способ и плевать нашу строку.
s = 'http://www.example.com/?s=something&two=20' print(s[:s.index('&')])
Выход:
http://www.example.com/?s=something
В этом сценарии задача резки строки была довольно проста, поскольку был один разделитель, и все, что нам нужно было сделать, была разделить строку на основе разделителя &
Отказ Что, если вы хотите извлечь строку, устраняя более одного символа или последовательности. Это приводит нас к следующему сценарию!
✨ Сценарий 2.
Постановка проблемы
Учитывая строку, состоящую из чисел, букв и специальных символов; Как разделить строку всякий раз, когда происходит специальный символ или число?
Пример
string = "Finxter$#! Academy Python111Freelancing"
Желаемый вывод
['Finxter', 'Academy', 'Python', 'Freelancing']
◈ Метод 1: Использование Re.Split
Re.Split (шаблон, строка)
Метод соответствует всем вхождению шаблон
В строка
и делит строку вдоль матчей, что приводит к списку строк между матчи. Например, Re.Split («A», «BBABBBAB»)
Результаты в списке строк [«BB», «BBB», «B»]
Отказ
Решение
import re s = "Finxter$#! Academy Python111Freelancing" res = re.split('\d+|\W+', s) print(res)
Выход:
['Finxter', 'Academy', 'Python', 'Freelancing']
Примечание:
-
\ D
Специальный персонаж соответствует любой цифре от 0 до 9. \ W
. Это специальная последовательность, которая возвращает матч, где он не находит никаких символов слова в данной строке. Здесь используется, чтобы найти разделители во время расщепления строки.
Если вы хотите хранить сепараторы, пожалуйста, посмотрите на Это руководство что ответит вам вопрос в деталях.
◈ Метод 2: Использование iTertools.groupby ()
-
Itertools.groupby (ИТЕРАЛНЫЙ,)
Функция создает итератор, который возвращает кортежи(ключ, групповой итератор)
сгруппирован каждым значениемключ
. Мы используемstr.isalpha ()
Функция в качестве ключевой функции. -
str.isalpha ()
Функция возвращаетПравда
Если строка состоит только из буквенных символов.
Решение
from itertools import groupby s = "Finxter$#! Academy Python111Freelancing" r=[] res = [''.join(g) for _, g in groupby(s, str.isalpha)] for item in res: if item.isalpha(): r.append(item) print(r)
Выход:
['Finxter', 'Academy', 'Python', 'Freelancing']
✨ Сценарий 3.
Если вы конкретно справляетесь с URL-адресами, вы бы хотели использовать встроенные библиотеки, которые имеют дело с URL.
Пример: Вы хотите удалить два = 20
из строки запроса, приведенной ниже:
s='http://www.domain.com/?s=some&two=20'
Желаемый выход:
http://www.domain.com/?s=some
Решение
- Шаг 1: Проанализируйте весь URL.
- Шаг 2: Извлечь Строка запроса.
- Шаг 3: Преобразуйте его в Python Словарь Отказ
- Шаг 4: Снимите ключ «два» из словаря.
- Шаг 5: положите его обратно в строку запроса.
- Шаг 6: Сшить URL обратно вместе.
Давайте посмотрим на следующую программу, которая демонстрирует точный процесс, как объяснено на вышеуказанных шагах. (Пожалуйста, следуйте комментариям в коде!)
import urllib.parse # Step 1: parse the entire URL parse_result = urllib.parse.urlsplit("http://www.example.com/?s=something&two=20") # Step 2: Extract the query string query_s = parse_result.query # Step 3: Convert it to a Python dictionary query_d = urllib.parse.parse_qs(parse_result.query) # Step 4: remove the ['two'] key from the dictionary del query_d['two'] # Step 5: Put it back to the query string new_query_s = urllib.parse.urlencode(query_d, True) # Step 6: Stitch the URL back together result = urllib.parse.urlunsplit(( parse_result.scheme, parse_result.netloc, parse_result.path, new_query_s, parse_result.fragment)) print(result)
Выход:
http://www.example.com/?s=something
Преимущество использования вышеуказанной процедуры заключается в том, что у вас больше контроля над URL. Например, если вы только хотели удалить Два
Аргумент из строки запроса, даже если он произошел ранее в строке запроса ( «Два = 20 и S = что-то»
), это все равно будет функционально и работать идеально в порядке.
Заключение
В этой статье вы узнали некоторые важные концепции, касающиеся расщепления строки в Python. Выберите процедуру, которая соответствует вашим требованиям и реализует их соответственно, как продемонстрировано в этой статье с помощью многочисленных сценариев. Это приводит нас к концу этой статьи; Пожалуйста, Оставайтесь настроиться и Подписаться Для получения дополнительных решений и интересных дискуссий.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @:
Оригинал: “https://blog.finxter.com/how-to-cut-a-string-in-python/”