обертывание текстового файла, чтобы каждая строка содержала не более 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. 

  • Отсутствует аргумент argpse в python 3
  • Ошибка Python - количество букв в имени
  • Как Python возвращает несколько значений из функции?
  • Как найти среднее значение в файле .txt
  • Угадайте оптимизацию числа игр (пользователь создает номер, компьютерные догадки)
  • Удаление элементов из списка в Python
  • Все экземпляры класса имеют такой же диктант, как и атрибут в Python 3.2
  • python 3.5: TypeError: необходим байтоподобный объект, а не «str» при записи в файл
  • 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 - лучший язык программирования в мире.