Разбить строку на две ровные части
Считаем длину строки. В первую часть берем элементы с первого до длина/2, во вторую с длина/2 до последнего:
text = "where's my car dude?" l = len(text) + 1 part_1 = text[0:l//2] part_2 = text[l//2:] print (part_1) print (part_2)
(добавляем единицу, чтобы в случае нечетного количества символов в первой части было на один символ больше. Если единицу не добавлять, то на один символ больше будет во второй части)
where's my car dude?
Нечетное количество символов:
where's my car dude
Как разделить string пополам в определенном месте?
всё работает, но он разрывает текст в неудобном месте, в моем string каждая строка заканчивается \n, можно ли сделать разделение текста на 2 части через n’ое количество \n?
например, я хочу, чтобы текст был разделен на 2 части по 50 строк, то есть нужно разделение на 50ом \n, как такое можно сделать?
- Вопрос задан 12 дек. 2022
- 107 просмотров
Комментировать
Решения вопроса 1
Программист
так подели на строки вначале, если тебе надо строки делить пополам
yourlist=mylist.split("\n") firstpart, secondpart = "\n".join(yourlist[:len(yourlist)//2]), "\n".join(yourlist[len(yourlist)//2:])
Ответ написан 12 дек. 2022
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1

Александр Нестеров @AlexNest Куратор тега Python
Работаю с Python/Django
Собственно нужно использовать две следующие функции:
split
join
и срезы, подобно тому как в исходном коде
Ответ написан 12 дек. 2022
Комментировать
Нравится 1 Комментировать
Функции разбивки строк на части и образования новых строк с помощью кортежей и списков
Функция str.join() возвращает строку, которая есть объединением строк в итерированном объекте. Если в итерированнм объекте есть не строчные значения, то функция сгенерирует исключение TypeError.
В соответствии с документацией Python использование функции имеет следующую форму:
s1 = s2.join(iterable)
- s1 – строка, которая создается в результате объединения строк итерированного объекта iterable ;
- s2 – строка, которая служит разделителем при объединении строк.
Пример.
# Функція str.join() - сборка строки из списка # Список строк lst = ['abc', 'def', 'ghi'] s1 = '' s2 = s1.join(lst) # s2 = 'abcdefghi' # Список символов SYMBOLS = list("Hello") # ITEMS = ['H', 'e', 'l', 'l', 'o'] s1 = "" s3 = s1.join(SYMBOLS) # s3 = 'Hello' s4 = str.join(s1, SYMBOLS) # s4 = 'Hello' # Разделитель - строка ' => ' s1 = ' => ' s5 = s1.join(['012', '345', '678']) # s5 = '012 => 345 => 678'
2. Функция str.partition() . Разбить строку на кортеж начиная с начала строки
Функция str.partition() разбивает строку на кортеж из 3-х элементов на основе заданного символа-разделителя. В отличие от функции str.rpartition() в данной функции строка пересматривается от начала до конца.
Общая форма использования функции следующая:
t = str.partition(sep)
- str – строка, которая рассматривается на предмет разбиения;
- t – результирующий кортеж, состоящий из 3-х строк. Первая строка – это часть строки перед разделителем sep . Вторая строка – это сам разделитель sep . Третья строка – это часть строки после разделителя sep ;
- sep – символ-разделитель.
Если разделитель не найден, то функция возвращает кортеж из 3-х строк, в котором первым следует сама строка, затем две пустых строки.
Пример.
# Функция str.partition() - разбивает строку на основе символа-разделителя # 1. Случай, когда разделитель найден s1 = 'abc,def,ghi' s2 = s1.partition(',') # s2 = ('abc', ',', 'def,ghi') s2 = 'abcdef'.partition('d') # s2 = ('abc', 'd', 'ef') s1 = '012+345' s2 = str.partition(s1, '+') # s2 = ('012', '+', '345') # 2. Случай, когда разделитель не найден s1 = '12345' s2 = s1.partition('=') # s2 = ('12345', '', '') # 3. Случай, когда есть несколько разделителей - строка пересматривается сначала s1 = '012+345+65+89' s2 = s1.partition('+') # s2 = ('012', '+', '345+65+89')
3. Функция str.rpartition() . Разбить строку на кортеж начиная с конца строки
Функция str.rpartition() разбивает строку на кортеж из 3-х элементов на основе заданного символа-разделителя. В отличие от функции str.partition() в данной функции строка пересматривается с конца.
Общая форма использования функции следующая:
t = str.rpartition(sep)
- str – строка, которая рассматривается на предмет разбиения;
- t – результирующий кортеж, состоящий из 3-х строк. Первая строка – это часть строки перед разделителем sep . Вторая строка – это сам разделитель sep . Третья строка – это часть строки после разделителя sep ;
- sep – символ-разделитель.
Если разделитель не найден, то функция возвращает кортеж из 3-х строк, в котором первые две строки пустые, третья строка – сама строка.
Пример.
# Функция str.rpartition() - разбивает строку на основе символа-разделителя # 1. Случай, когда разделитель найден s1 = 'abc,def,ghi' s2 = s1.rpartition(',') # s2 = ('abc,def', ',', 'ghi') s2 = 'abcdef'.rpartition('d') # s2 = ('abc', 'd', 'ef') s1 = '012+345' s2 = str.rpartition(s1, '+') # s2 = ('012', '+', '345') # 2. Случай, когда разделитель не найден s1 = '12345' s2 = s1.rpartition('=') # s2 = ('', '', '12345') # 3. Случай, когда несколько разделителей - строка пересматривается с конца s1 = '012+345+65+89' s2 = s1.rpartition('+') # s2 = ('012+345+65', '+', '89')
4. Функция str.rsplit() . Сформировать список слов на основе символа-разделителя
Функция str.rsplit() формирует список слов, сформированных из некоторой строки на основе символа-разделителя. Функция работает также как и функция str.split() только с тем отличием, что сформированные слова разделяются справа налево.
Общая форма использования функции следующая:
setStr = str.rsplit(sep = None, maxsplit = -1)
- setStr – результирующий список строк (слов), которые формируются из строки str ;
- str – исходная строка, которая разбивается на множество слов;
- sep – разделитель слов, который может состоять из одного или нескольких символов. Если задан разлелитель sep , то сами разделители не группируются вместе и считаются разделителями пустых строк. Если попробовать разделить пустую строку заданным разделителем, то возвращается список, содержащий пустую строку [»] ;
- maxsplit – максимальное количество разбивок, на которое может быть разбита строка str . Например, если maxsplit =2, то список будет содержать не более 3 элементов ( maxsplit +1 элементов). Если значение maxsplit не указано или равно -1, то количество разделений неограничено, в этом случае выполняются все возможные разбивки строки.
Пример.
# Функция str.rsplit() - разбивка строки по символу-разделителю # 1. Вызов функции без параметров sep и maxsplit s1 = 'a,b,c,d' s2 = s1.rsplit() # s2 = ['a,b,c,d'] - одно слово, принимается ко вниманию пробел s1 = 'a b c def' s2 = s1.rsplit() # s2 = ['a', 'b', 'c', 'def'] - 4 слова, учтен пробел s1 = 'abc hello,+ fgh 0123 ' s2 = str.rsplit(s1) # s2 = ['abc', 'hello,+', 'fgh', '0123'] # 2. Вызов функции с параметром sep s1 = 'a,b,c,d' s2 = s1.rsplit(',') # s2 = ['a', 'b', 'c', 'd'], символ-разделитель ',' # символ-разделитель '!=' s2 = 'a!=b!=c!=d+5'.rsplit('!=') # s2 = ['a', 'b', 'c', 'd+5'] # 3. Вызов функции с параметрами sep, maxsplit # при таком вызове результат функции отличается от результата split() s1 = 'a,b,c,d,e' s2 = s1.split(',', 2) # s2=['a', 'b', 'c,d,e'] - от начала до конца s3 = s1.rsplit(',', 2) # s3=['a,b,c', 'd', 'e'] - с конца до начала s1 = 'a+b+c+d' s2 = s1.split('+', 2) # s2 = ['a', 'b', 'c+d'] - от начала до конца s3 = s1.rsplit('+', 2) # s3 = ['a+b', 'c', 'd'] - с конца до начала
5. Функция str.split() . Разбивка строки по символу-разделителю
Функция str.split() получает строку и возвращает список слов, сформированных из этой строки, которые разделяются (выделяются) указанным символом-разделителем.
Согласно документации Python общая форма использования функции следующая:
setStr = str.split(sep = None, maxsplit = -1)
- setStr – результирующий список строк (слов), формируемых из строки str ;
- str – исходная строка, которая разбивается на множество слов;
- sep – разделитель слов, который может состоять из одного или нескольких символов. Если указан разделитель sep , то сами разделители не группируются вместе и считаются разделителями пустых строк. Если попробовать разделить пустую строку указанным разделителем, то возвращается список, содержащий пустую строку [»] ;
- maxsplit – максимальное количество разбивок, на которое может быть разбита строка str . Например, если maxsplit =2, то список будет содержать не более 3 элементов ( maxsplit +1 элементов). Если значение maxsplit не указано или равно -1, то количество разбивок неограничено, в этом случае выполняются все возможные разбивки строки.
Пример.
# Функция str.split() - разбивка строки по символу-разделителю # 1. Вызов функции без параметров sep и maxsplit s1 = 'a,b,c,d' s2 = s1.split() # s2 = ['a,b,c,d'] - одно слово, принимается ко вниманию пробел s1 = 'a b c def' s2 = s1.split() # s2 = ['a', 'b', 'c', 'def'] - 4 слова, учитывается пробел s1 = 'abc hello,+ fgh 0123 ' s2 = str.split(s1) # s2 = s2 = ['abc', 'hello,+', 'fgh', '0123'] # 2. Вызов функции с параметром sep s1 = 'a,b,c,d' s2 = s1.split(',') # s2 = ['a', 'b', 'c', 'd'], символ-разделитель ',' # символ-разделитель '==' s2 = 'a==b==c==d+5'.split('==') # s2 = ['a', 'b', 'c', 'd+5'] # 3. Вызов функции с параметрами sep, maxsplit s1 = 'a,b,c,d,e' s2 = s1.split(',', 2) # s2=['a', 'b', 'c,d,e'] - максимум 2 разбивки (3 слова) s1 = 'a+b+++c+def++ghi' s2 = s1.split('+',3) # s2=['a', 'b', '', '+c+def++ghi'] - символ '+' заменен на ''
6. Функция str.splitlines() . Получить список строк на основе строки, которая содержит символы-разделители строк
Функция str.splitlines() формирует список строк на основе заданной строки таким образом, что учитываются символы которые служат разделителями строки.
Согласно документации Python общая форма использования функции следующая:
strList = str.splitlines([keepends])
- strList – результирующий список строк разделенных на границах строки;
- str – строка, содержащая символы, которые разделяют строки. К таким символам относятся, например, символ ‘\n’ новой строки (см. ниже таблицу);
- keepends – необязательный параметр, который определяет включение символов-разделителей в результирующую строку strList . Если keepends = True , то символы-разделители включаются в результирующую строку.
Символы, на основе которых осуществляется разделение строки приведены в нижеследующей таблице

Пример.
# Функция str.splitlines() # 1. Вызов функции без параметров s1 = 'ab\ncd\ref' s2 = s1.splitlines() # s2 = ['ab', 'cd', 'ef'] s1 = '012\x1d345\x1e6789' s2 = str.splitlines(s1) # s2 = ['012', '345', '6789'] s2 = 'abc\u2028defg'.splitlines() # s2 = ['abc', 'defg'] # 2. Вызов функции с параметром - включены символы-разделители s1 = 'ab\ncd\r\nef' s2 = s1.splitlines(True) # s2 = ['ab\n', 'cd\r\n', 'ef'] s2 = 'abc\u2029def'.splitlines(True) # s2 = ['abc\u2029', 'def'] s2 = '\n\n\r\n'.splitlines(False) # s2 = ['', '', ''] s2 = '\n\n\r\n'.splitlines(True) # s2 = ['\n', '\n', '\r\n']
Связанные темы
- Функции для работы со строками, определяющие особенности строки
- Функции поиска и замены подстроки в строке
- Функции обрабатывающие и определяющие начало и конец строки
- Функции обработки строки в соответствии с форматом или правилом кодирования. Стили форматирования
- Функции выравнивания строк
- Функции обрабатывающие регистр символов в строке
Как разделить строку по пробелам python
Такую задачу всегда можно решить с помощью цикла. Но в Python есть метод .split() . Именно его обычно используют для разделения строки на части. В качестве разделителя можно использовать любой символ: пробел, запятую, перенос строки ( \n ) и т.д.
На выходе мы получим список строк:
str = 'how are you' str.split(' ') # ['how', 'are', 'you']
Пробел как разделитель можно не указывать. Метод .split() будет использовать параметр по умолчанию:
str = 'how are you?' str.split() # ['how', 'are', 'you']
Иногда перед тем, как разделить строку, необходимо избавиться от лишних знаков препинания:
str = 'Hi, how are you?' str[:-1].replace(',', '').split() # ['Hi', 'how', 'are', 'you']
