У меня есть текст, который мне нужно очистить для дальнейшей обработки.
Вот пример текста:
Найджел Рувим Рук Уильямс (15 июля 1944 - 21 апреля 1992) был английским консерватором и экспертом по реставрации керамики и стекла.С 1961 года до своей смерти он работал в Британском музее, где стал главным консерватором керамики и стекла в 1983 году. Там его работы включали успешные реставрации шлема Саттона Ху и портлендской вазы.
Вступление вБудучи помощником в 16 лет, Уильямс всю свою карьеру и большую часть своей жизни провел в Британском музее.Он был одним из первых людей, изучавших сохранение, еще не признанных в качестве профессии, и с раннего возраста получил ответственность за высококлассные объекты.В 1960-х годах он помог с повторными раскопками корабля-захоронения Саттон-Ху, и в его начале-середине двадцатых годов он сохранил многие найденные в нем предметы: прежде всего шлем Саттон-Ху, который занимал год его времени,Он также реконструировал другие предметы из находки, в том числе щит, рога и бутылки из кленового дерева.
«Постоянной страстью его жизни» была керамика [4], а 1970-е и 1980-е годы предоставили Уильямсу широкие возможности вэто поле.После того, как в 1974 году среди обломков HMS Colossus было обнаружено почти 31 000 фрагментов разбитых греческих ваз, Уильямс принялся за их сборку.Процесс был передан по телевидению, и превратил его в телевизионную личность.Десять лет спустя, в 1988 и 1989 годах, коронным достижением Уильямса стало то, что он разобрал на части Портлендскую вазу, один из самых известных стеклянных предметов в мире, и собрал ее вместе.Реконструкция была снова передана по телевидению для программы BBC, и, как и в случае со шлемом Саттон Ху, на ее завершение ушёл почти год.
Мне нужно:
разбить текст на предложения (по символу полной остановки '.'), исключив символ полной остановки
разбить предложения на слова (только буквы латинского алфавита), другие символы следует заменитьсимволом пробела и для разделения этих слов следует использовать только один пробел
Показать весь текст в нижнем регистре
Я использую Macи я получаю этот код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
fread = open('source.txt')
fwrite = open('result.txt','w+')
for line in fread:
new_line = line
# split the text into sentences
new_line = re.sub(r"\." , "\r", new_line)
# change all uppercase letters to lowercase
new_line = new_line.lower()
# only latin letters
new_line = re.sub("[^a-z\s]", " ", new_line)
# The words should be separated by single spaces.
new_line = re.sub(r" +"," ", new_line)
# Getting rid of space in the beginning of the sentence
new_line = re.sub(r"ˆ\s+", "", new_line)
fwrite.write(new_line)
fread.close()
fwrite.close()
Результат не совсем так, как ожидалось.Пробелы в начале каждой строки не были удалены.Я запустил тот же код на компьютере с Windows, и заметил, что где-то точка останова была заменена на, а иногда - на.Поэтому я не уверен, что происходит.
Вот пример результата.Поскольку пробелы, которые не отображаются в stackoverflow, мне пришлось отображать текст в виде кода:
nigel reuben rook williams july april was an english conservator and expert on the restoration of ceramics and glass
from until his death he worked at the british museum where he became the chief conservator of ceramics and glass in
there his work included the successful restorations of the sutton hoo helmet and the portland vase
joining as an assistant at age williams spent his entire career and most of his life at the british museum
he was one of the first people to study conservation not yet recognised as a profession and from an early age was given responsibility over high profile objects
in the s he assisted with the re excavation of the sutton hoo ship burial and in his early to mid twenties he conserved many of the objects found therein most notably the sutton hoo helmet which occupied a year of his time
he likewise reconstructed other objects from the find including the shield drinking horns and maplewood bottles
the abiding passion of his life was ceramics and the s and s gave williams ample opportunities in that field
after nearly fragments of shattered greek vases were found in amidst the wreck of hms colossus williams set to work piecing them together
the process was televised and turned him into a television personality
a decade later in and williams s crowning achievement came when he took to pieces the portland vase one of the most famous glass objects in the world and put it back together
the reconstruction was again televised for a bbc programme and as with the sutton hoo helmet took nearly a year to complete
Различные символы могут не отображаться, как я вижу, например, перед объединением я вижу два ??
с использованием TextWrangler
.
Использование функции lstrip()
, кстати, позволяет удалить пробелы в начале каждого предложения.
Почему <new_line = re.sub(r"ˆ\s+", "", new_line)>
не работает?
Я подозреваю, что '\ n', используемый для обозначения конца строки, вызывает некоторые проблемы.