Разделение строки в Python — это процесс обработки текста или манипулирования строками, полезный в таких областях, как обработка данных, веб-разработка и анализ текста.

Давайте посмотрим, как мы можем использовать эти методы для разделения строки по каждому n-му символу в Python.

Содержание

С помощью цикла for

Цикл for в Python используется для перебора коллекции до заданного диапазона. Мы используем цикл для разделения строки на фрагменты по n символов.

Вот пример кода Python разделения строки с помощью цикла for.

text = "The USA is a diverse and vibrant country."
split_chunks = []
n  = 7
for index in range(0, len(text), n):
    split_chunks.append(text[index : index + n])
print(split_chunks)

Мы используем метод нарезки строки, чтобы разделить строку, а затем добавить нарезанную строку в список с помощью функции Append() в списке Python.

split_chunks.append(text[index : index + n])

Этот код разбивает текст строки по каждому n-му символу(в данном случае n=7) с помощью цикла for, в результате чего получается список подстрок, хранящийся в Split_chunks. Каждая подстрока содержит n символов, кроме последней подстроки.

Выход:

['The USA', ' is a d', 'iverse ', 'and vib', 'rant co', 'untry.']

Приложены снимки, иллюстрирующие код Python и его выходные данные в Visual Studio.

С помощью цикла for

С помощью цикла while

Цикл while в Python используется для многократного выполнения блока кода, пока указанное условие истинно.

Он перебирает строку, добавляя подстроки длины n в список данных до конца строки.

Вот код для разделения строки по каждому n-му символу в Python с использованием цикла while:

def split_string_while_loop(s, n):
    data = []
    i = 0
    while i < len(s):
        data.append(s[i:i+n])
        i += n
    return data

string = "Washington DC is the capital of the United States of America"
n = 5
result = split_string_while_loop(string, n)
print(result)

Вывод:

['Washi', 'ngton', ' DC i', 's the', ' capi', 'tal o', 'f the', ' Unit', 'ed St', 'ates ', 'of Am', 'erica']

Вот объединенное представление сценария Python и его результатов в Visual Studio.

С помощью цикла while

С использованием понимания списка

Понимание списков — это краткий и мощный способ создания списков в Python.

Мы будем использовать понимание списка, чтобы разделить строку и сгенерировать список подстрок по заданному количеству символов «n».

Код:

text = "New York City is one of the most populous city in USA."
n = 6
out = [(text[i:i+n]) for i in range(0, len(text), n)]
print(out)

В этом примере мы разбиваем строковый текст на фрагменты по n символов(n = 6), используя понимание списка в Python.

Он генерирует список подстрок, каждая из которых содержит n символов в Python, путем перебора диапазона индексов и извлечения подстрок длины n из исходной строки.

Выход:

['New Yo', 'rk Cit', 'y is o', 'ne of ', 'the mo', 'st pop', 'ulous ', 'city i', 'n USA.']

Ниже показан код Python вместе с его выходными данными, полученными в Visual Studio.

С использованием понимания списка

Используя регулярное выражение

Регулярные выражения(regex) — это мощные инструменты для сопоставления шаблонов и обработки текста в Python.

Мы используем функцию re.findall() для поиска всех вхождений шаблона в строке и возврата списка совпадающих подстрок.

Давайте посмотрим пример разделения строки по каждому n-му символу в Python с использованием модуля re:

import re
def split_string_regex(s, n):
    return re.findall('.{1,%d}' % n, s)

string = "Los Angeles is a city in California, USA"
n = 5
result = split_string_regex(string, n)
print(result)

Используя регулярные выражения, этот код разбивает строку на фрагменты по n символов(n=5). Он использует функцию re.findall() в Python для поиска всех подстрок, соответствующих шаблону регулярного выражения.

return re.findall('.{1,%d}' % n, s)

{1,%d} соответствует любому символу, встречающемуся от 1 до n раз. Результатом является список подстрок, каждая из которых содержит n символов, извлеченных из исходной строки.

Выход:

['Los A', 'ngele', 's is ', 'a cit', 'y in ', 'Calif', 'ornia', ', USA']

Представлено составное изображение, демонстрирующее как код Python, так и его выходные данные в Visual Studio.

Используя регулярное выражение

Используя zip_longest

zip_longest — это функция из модуля itertools в Python, которая объединяет несколько итераций в кортежи.

Он принимает итерируемый объект(строку), делит его на фрагменты длиной n и заполняет все недостающие символы в последнем фрагменте указанным значением заполнения.

Вот пример разделения строки по каждому n-му символу в Python с использованием функции zip_longest:

from itertools import zip_longest
def fun(n, i, value=None):
    args = [iter(i)] * n
    return zip_longest(fillvalue=value, *args)
my_string = "California is a major hub for technology companies."
n = 8
op_str = [''.join(l) for l in fun(n, my_string, '')]
op = []
for a in op_str:
    op.append(a)
print(op)

Выход:

['Californ', 'ia is a ', 'major hu', 'b for te', 'chnology', ' compani', 'es.']

Ниже показан объединенный снимок экрана сценария Python и его результатов в Visual Studio.

Используя zip_longest

С помощью Textwrap

Textwrap — это модуль Python, который предоставляет функции для переноса и форматирования текста.

Функция Wrap() из модуля textwrap используется для разделения строки на несколько строк одинаковой длины.

Если возможно, мы используем его для разделения строки на строки, содержащие n символов, путем переноса текста по границам слов.

Код:

from textwrap import wrap
s = "Texas is the second-largest by both area and population."
n = 5
print(wrap(s, n))

Результатом является список подстрок, содержащий n последовательных символов, извлеченных из исходной строки.

Выход

['Texas', 'is', 'the s', 'econd', '-larg', 'est', 'by', 'both', 'area', 'and p', 'opula', 'tion.']

Вот снимок экрана примера с использованием редактора кода Visual Studio.

С помощью Textwrap

С помощью list+map+join+zip

Этот подход сочетает в себе несколько встроенных функций и возможностей Python для разделения строки на группу из n символов.

Мы используем метод zip() для группировки элементов каждого итератора в кортежи длины n. Затем Map(».join, …), чтобы применить функцию join() к каждому кортежу, объединяя символы в строки.

Вот пример разделения строки по каждому n-му символу в Python:

s = "The Statue of Liberty is a symbol of freedom and democracy in the United States."
n = 10
print(list(map(''.join, zip(*[iter(s)]*n))))

В этом примере я комбинирую zip, map, join и понимание списков. Он создает итератор для строки, группирует символы в кортежи длины n, объединяет каждый кортеж в строку и, наконец, преобразует результат в список подстрок.

Выход:

['The Statue', ' of Libert', 'y is a sym', 'bol of fre', 'edom and d', 'emocracy i', 'n the Unit', 'ed States.']

Прилагается визуальное представление кода Python и его вывода в Visual Studio.

С помощью list+map+join+zip

С помощью функции islice

Функция islice в Python означает «итерируемый срез».

Она позволяет эффективно разрезать и перебирать элементы итерируемого объекта(например, список, кортеж или строку) без создания ненужных промежуточных последовательностей.

Код:

from itertools import islice
famouse_place = "The Grand Canyon is one of the natural wonders of the world."
n = 8
def split_fun(n, iterable):
    i = iter(iterable)
    piece = list(islice(i, n))
    while piece:
        yield ''.join(piece)
        piece = list(islice(i, n))
print(list(split_fun(n, list(famouse_place))))

В коде мы используем iter() для создания итератора по строке(famouse_place), а затем используем islice() для создания итератора, который возвращает элементы из входного итератора до указанного значения n.

Затем list(islice(i, n)) генерирует список из N последовательных символов из входного итератора.

Выход:

['The Gran', 'd Canyon', ' is one ', 'of the n', 'atural w', 'onders o', 'f the wo', 'rld.']

Вот снимок сценария Python и полученного результата в Visual Studio.

С помощью функции islice

С помощью срезов

Функция Sliced() — это встроенный метод модуля more_itertools Python, который необходимо установить отдельно, используя:

pip install more_itertools

Метод позволяет разбить итерируемый объект на фрагменты заданного размера, даже если общая длина итерируемого объекта не делится на размер фрагмента без остатка.

Код:

from more_itertools import sliced
def split_string_with_sliced(s, n):
    return list(sliced(s, n))

string = "The White House is workplace of the President of the USA."
n = int(input("Enter Split Range: "))
result = split_string_with_sliced(string, n)
print(result)

Он возвращает список подстрок, каждая из которых содержит n символов, извлеченных из исходной строки. Функция среза обрабатывает случаи, когда общая длина строки не делится на n без остатка, гарантируя, что все символы будут включены в выходные данные.

Выход:

['The Whi', 'te Hous', 'e is wo', 'rkplace', ' of the', ' Presid', 'ent of ', 'the USA', '.']

Вот снимок экрана примера с использованием редактора кода Visual Studio.

С помощью срезов

С помощью рекурсии с нарезкой

Рекурсия — это метод программирования, при котором функция вызывает саму себя для решения небольших экземпляров одной и той же проблемы в Python.

Использование рекурсии для этой задачи не является предпочтительным подходом, поскольку ее выполнение займет больше времени по сравнению с другими методами, которые мы рассмотрели.

Вот пример разделения строки по каждому n-му символу в Python с использованием рекурсии.

def split_string_recursive(s, n):
    if len(s) <= n:
        return [s] if s else []
    else:
        return [s[:n]] + split_string_recursive(s[n:], n)
# Example usage:
string = "The Empire State Building is a famous landmark in New York City."
n = 10
result = split_string_recursive(string, n)
print(result)

Выход:

['The Empire', ' State Bui', 'lding is a', ' famous la', 'ndmark in ', 'New York C', 'ity.']

Ниже показан код Python и его выходные данные, полученные в Visual Studio.

С помощью рекурсии с нарезкой

Заключение

Здесь мы рассмотрели различные методы разделения строки по каждому n-му символу в Python. Мы углубились в 10 различных методов, каждый из которых предлагает свой подход для эффективного решения этой задачи.

Мы рассмотрели множество возможностей: от простых итераций с циклами for и while до более сложных методов, таких как понимание списков, регулярные выражения и рекурсия со срезами.

Добавить комментарий