Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/170: Рейтинг темы: голосов - 170, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 6

Разбитие текста на строки в python 3.0

28.08.2016, 13:41. Показов 34697. Ответов 11

Студворк — интернет-сервис помощи студентам
Дорогие друзья, помогите, пожалуйста, реализовать разбиение текста на строки определенной длины.




P.S Вариант со
Python
1
.split("\n")
не проходит, т.к предложение в тексте может быть на несколько строк.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.08.2016, 13:41
Ответы с готовыми решениями:

Разбитие текста по столбцам
Доброго времени. Четвертый день к ряду пытаюсь разобраться как собрать макрос для автоматизации процесса, но нехватка опыта и знаний берут...

Разбитие спарсеного текста
Спарсиваю я стандартно и извлекаю из всего кода только таблицу (остальное мне ненужно), примерно так выглядит спарсеное <table...

Разбитие текста на константы a и b
Добрый! Нужна помощь в написании скрипта. Мне нужно сделать так: Вводим текст(Найти: машину) и разбивал на 2 значения a и b a:=...

11
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
28.08.2016, 15:04
а если эта определенная длина попадает на середину слова то как поступать? и как вообще разбивать по элементам строки или пробелам?
0
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 6
28.08.2016, 16:19  [ТС]
Нужно написать функцию, которая получает текст и максимальную длину строки , разбивает его на строки не больше максимальной длины и НЕ разрывая слов, и возвращает итоговый текст. Пока не понимаю как разбить текст по строкам.
0
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
28.08.2016, 17:02
Наверное, это не то, что Вам нужно
Python
1
2
3
4
5
6
7
text = """Тут я вдруг вспоминаю, что забыл дома выключить электрическую печку.  Мне очень досадно. Я поворачиваюсь и иду домой. Так хорошо начался день,  и  вот
уже первая неудача. Мне не следовало выходить на улицу."""
 
import textwrap
r = textwrap.fill(text, width=50)
 
print(r)
1
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 6
28.08.2016, 17:46  [ТС]
Нет, увы

Добавлено через 34 минуты
Но нужно написать, что то похожее
0
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
28.08.2016, 20:43
Лучший ответ Сообщение было отмечено Shkad как решение

Решение

Вот, что получилось. Не знаю, то ли Вам нужно было.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def spl(text, maxlen):
    text1 = ''  # записываем сюда новую строку
    c = 0  # счётчик символов с строке
    for i in text.split():  # проходим по каждому слову
        c += len(i)  # прибавляем длину слова
        if c > maxlen:  # если символов больше максимума
            text1 += '\n'  # перенос строки
            c = len(i)  # счётчик равен первому слову в строке
        elif text1 != '':  # условие, чтобы не ставить пробел перед 1-м словом
            text1 += ' '  # ставим пробел после непоследнего слова в строке
            c += 1  # учитываем его в счётчике
        text1 += i  # прибавляем слово
    return text1  # возвращаем новый текст
1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
28.08.2016, 20:59
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
text = '''Нужно написать функцию, которая получает текст и максимальную длину строки,
            разбивает его на строки не больше максимальной длины
             и НЕ разрывая слов, и возвращает итоговый текст.
             Пока не понимаю как разбить текст по строкам.'''
 
print(max(text.split('\n'),key = len)) # максимальная длина строки из текста
 
len_str =  len(max(text.split('\n'),key = len).split()) # длина строки при разбивке
res = []
list_text = []
for i in text.split('\n'):
    list_text += i.split()
for i in list_text:
    res.append(i)
    if len(res) == len_str or i == list_text[-1]:
        print(' '.join(res))
        res = []
результат
Python
1
2
3
4
5
6
Нужно написать функцию, которая получает текст и максимальную длину строки, # максимальная длина строки из текста
 
Нужно написать функцию, которая получает текст и максимальную длину строки,
разбивает его на строки не больше максимальной длины и НЕ
разрывая слов, и возвращает итоговый текст. Пока не понимаю как
разбить текст по строкам.
0
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 6
28.08.2016, 21:03  [ТС]
Спасибо огромное, вы очень помогли.


Цитата Сообщение от Kir-malishev Посмотреть сообщение
def spl(text, maxlen):
* * text1 = '' *# записываем сюда новую строку
* * c = 0 *# счётчик символов с строке
* * for i in text.split(): *# проходим по каждому слову
* * * * c += len(i) *# прибавляем длину слова
* * * * if c > maxlen: *# если символов больше максимума
* * * * * * text1 += '\n' *# перенос строки
* * * * * * c = len(i) *# счётчик равен первому слову в строке
* * * * elif text1 != '': *# условие, чтобы не ставить пробел перед 1-м словом
* * * * * * text1 += ' ' *# ставим пробел после непоследнего слова в строке
* * * * * * c += 1 *# учитываем его в счётчике
* * * * text1 += i *# прибавляем слово
* * return text1 *# возвращаем новый текст
0
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
28.08.2016, 21:22
Замените, пожалуйста, 6-ю строку на
Python
1
if c + 1 > maxlen:
или на
Python
1
if c >= maxlen:
Потому как мы ещё не учитываем пробел во время проверки, а он будет нужен, если переносить строку не надо. Иначе в строке может получиться на один символ больше.
0
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 6
28.08.2016, 21:43  [ТС]
Ок.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.08.2016, 22:47
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> MAX_LENGTH = 10
>>> text = "blah blah blah blah blah blah blah"
>>> rows = []
>>> while text:
...   if len(text) <= MAX_LENGTH:
...     rows.append(text)
...     text = ""
...   else:
...     for i in range(MAX_LENGTH + 1, 0, -1):
...       if str.isspace(text[i]):
...         rows.append(text[:i])
...         text = text[i+1:]
...         break
...
>>> for s in rows:
...   print(s)
...
blah blah
blah blah
blah blah
blah
осталось обработать ситуацию, когда "слово" в строке длиннее, чем заданная длина строки
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
29.08.2016, 23:05
Цитата Сообщение от easybudda Посмотреть сообщение
осталось обработать ситуацию, когда "слово" в строке длиннее, чем заданная длина строки
слово в строке не может быть длинее строки, а если самое длинное слово записано в одной строке то это и есть самая длинная строка относительно которой и надо форматировать текст
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2016, 23:05
Помогаю со студенческими работами здесь

Разбитие текста и заполнение таблицы
Привет всем! Помогите пожалуйста с макросом. Нужно преобразовать таблицу в формат подходящий для дальнейшего анализа. На листе Data...

Форматирование текста и разбитие на строчки
почему вот так не получается: d = 3 st = input() for i, s in enumerate(st.splitlines()): print(*filter(lambda x: (i % 2) ^ (x %...

Разбитие текста в ячейке на столбцы
Добрый день, необходимо разбить длинный текст в А1 на А1, А2, А3, А4... Разделителем выступает запятая. Знаю о станд. функции, но...

Разбитие одного текста из TextBox1 в TextBox(2,3,4)
У меня есть TextBox1 в который выдается текст из календаря (#пример:21 марта 2016г.)нужно что бы текст разделился TextBox2(21)...

Разбитие текста в найденой ячейке и заполнение таблицы
Привет всем! Помогите пожалуйста с разбитием текста в найденой ячейке и заполнением таблицы. Коротко говоря, из данных листа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru