Сохранять знаки абзаца при использовании заглавных букв - RegEx - PullRequest
0 голосов
/ 09 сентября 2018
p = re.compile(r'((?<=[\.\?!]\s)(\w+)|(^\w+))')
def cap(match):
    return(match.group().capitalize())
capitalized_1 = p.sub(cap, Inputfile)

with codecs.open('o.txt', mode="w", encoding="utf_8") as file:
  file.write(capitalized_1)

Я использую регулярное выражение для заглавных букв после.?!что код выше делает.Но он убирает метки абзаца (разрыва страницы) и объединяет его в один большой абзац.

Как сохранить метки абзаца и предотвратить слипание?

Входной файл:

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

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

Текущий вывод

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

Ожидаемый результат:

Вкл.На вкладке «Вставка» галереи содержат элементы, разработанные для согласования с общим видом вашего документа.Вы можете использовать эти галереи для вставки таблиц, верхних и нижних колонтитулов, списков, титульных страниц и других стандартных блоков документов.Когда вы создаете рисунки, диаграммы или диаграммы, они также согласуются с вашим текущим видом документа.

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

Редактировать 1:

import re,codecs
def capitalize(match):
    return ''.join([match.group(1), match.group(2).capitalize()])

with codecs.open('i.txt', encoding='utf-8') as f:
    text = f.read()

pattern = re.compile('(^|[.?!]\s+)(\w+)?')

print(pattern.sub(capitalize, text))

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

return ''.join([match.group(1), match.group(2).capitalize()])
AttributeError: 'NoneType' object has no attribute 'capitalize'

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете сделать это так:

import re


def capitalize(match):
    return ''.join([match.group(1), match.group(2).capitalize()])

text = """on the insert tab, the galleries include items that are designed to coordinate with the overall look of your document. you can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks. when you create pictures, charts, or diagrams, they also coordinate with your current document look.

you can easily change the formatting of selected text in the document text by choosing a look for the selected text from the quick styles gallery on the home tab. you can also format text directly by using the other controls on the home tab. most controls offer a choice of using the look from the current theme or using a format that you specify directly."""

pattern = re.compile('(^|[.?!]\s+)(\w+)?')

print(pattern.sub(capitalize, text))

выход

On the insert tab, the galleries include items that are designed to coordinate with the overall look of your document. You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks. When you create pictures, charts, or diagrams, they also coordinate with your current document look.

You can easily change the formatting of selected text in the document text by choosing a look for the selected text from the quick styles gallery on the home tab. You can also format text directly by using the other controls on the home tab. Most controls offer a choice of using the look from the current theme or using a format that you specify directly.

Примечания

  • (^|[.?!]\s+) означает захват . (точка), ? или !, за которым следуют один или несколько пробельных символов (табуляция, пробел и т. Д.). ^ означает начало строки; Таким образом, в полной мере эта группа означает начало предложения или .?!, за которым следует пробел.
  • (\w+)? означает один или несколько символов слова
  • Функция использования заглавных букв затем сохраняет то, что было найдено в первой группе, и заглавные буквы во второй группе (слово).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...