обертывание текстового файла, чтобы каждая строка содержала не более 80 символов

есть ли лучший способ решить эту проблему, желательно не через модуль.

вопрос:

Текстовая обработка. Вы устали видеть строки на обложке электронной почты, потому что люди печатают строки, которые слишком длинны для вашего приложения для чтения почты. Создайте программу для сканирования текстового файла для всех строк длиной более 80 символов. Для каждой из строк нарушения найдите самое близкое слово до 80 символов и сломайте там строку, вставив оставшийся текст в следующую строку (и нажав предыдущую следующую строку вниз на одну). Когда вы закончите, не должно быть линий длиной более 80 символов.

пусть содержание 9-16.txt:

Text Processing. You are tired of seeing lines on your e-mail wrap because people type lines that are too long for your mail reader application. Create a program to scan a text file for all lines longer than 80 characters. For each of the offending lines, find the closest word before 80 characters and break the line there, inserting the remaining text to the next line (and pushing the previous next line down one). When you are done, there should be no lines longer than 80 characters. 

моя программа для достижения этой цели

 f=open('9-16.txt','r') lis=[] def ding(a): if len(a)<=80: lis.append(a) return else: if a[79]==' ': lis.append(a[:80]) ding(a[80:]) elif a[79]!=' ': ind=a.rfind(' ',0,79) lis.append(a[:ind+1]) ding(a[ind+1:]) for x in f: if len(x)>80: ding(x) else: lis.append(x) ty=open('9-16o.txt','w') for x in lis: if x[-1]==' ': x=x[:-1]+'\n' else : x+='\n' ty.write(x) f.close() ty.close() 

9-16o.txt теперь содержит:

 Text Processing. You are tired of seeing lines on your e-mail wrap because people type lines that are too long for your mail reader application. Create a program to scan a text file for all lines longer than 80 characters. For each of the offending lines, find the closest word before 80 characters and break the line there, inserting the remaining text to the next line (and pushing the previous next line down one). When you are done, there should be no lines longer than 80 characters. 

  • Как удалить дубликаты в списке python
  • Как проверить, существует ли ключ в ** kwargs?
  • Недопустимый токен при использовании октальных чисел
  • Как закрепить два разных списка размеров в python
  • На месте замены текста в файле на Python
  • Python - разница между двумя строками
  • Как изящно чередовать два списка неравномерной длины в python?
  • Как использовать пользовательскую функцию сравнения в Python 3?
  • One Solution collect form web for “обертывание текстового файла, чтобы каждая строка содержала не более 80 символов”

    Вот довольно простое и сжатое решение с использованием регулярных выражений, вероятно, это не сработает для вашей домашней работы, но должно быть достаточно очевидно, почему ограничение использования модуля нецелесообразно:

     import re s = 'Text Processing. You are tired of seeing lines on your e-mail wrap because people type lines that are too long for your mail reader application. Create a program to scan a text file for all lines longer than 80 characters. For each of the offending lines, find the closest word before 80 characters and break the line there, inserting the remaining text to the next line (and pushing the previous next line down one). When you are done, there should be no lines longer than 80 characters.' print '\n'.join(line.strip() for line in re.findall(r'.{1,80}(?:\s+|$)', s)) 

    Результат:

     Text Processing. You are tired of seeing lines on your e-mail wrap because people type lines that are too long for your mail reader application. Create a program to scan a text file for all lines longer than 80 characters. For each of the offending lines, find the closest word before 80 characters and break the line there, inserting the remaining text to the next line (and pushing the previous next line down one). When you are done, there should be no lines longer than 80 characters. 

    Ваш образец текста – это одна строка, вы, вероятно, действительно хотите использовать что-то вроде этого:

     def split_lines(text): lines = text.split('\n') regex = re.compile(r'.{1,80}(?:\s+|$)') return '\n'.join(s.rstrip() for line in lines for s in regex.findall(line)) 
    Python - лучший язык программирования в мире.