Как заменить все новые строки, вкладки и лишние пробелы в текстовом файле

#python #text #replace

#python #текст #заменить

Вопрос:

У меня есть текстовый файл книги, и я хочу, чтобы он был прочитан в моей программе на python, чтобы разделить его на предложения с помощью open("book.txt").read().split(".") .

Проблема в том, что в файле есть новые разрывы строк и несколько пробелов. Я хочу, чтобы в файле были только слова, разделенные пробелом, а все новые строки превратились в один пробел.

Мой book.txt в настоящее время выглядит так (фрагмент):

 To Sherlock Holmes she is always the woman. I have seldom
heard him mention her under any other name. In his eyes she
eclipses and predominates the whole of her sex. It was not that
he felt any emotion akin to love for Irene Adler. All emotions,
and that one particularly, were abhorrent to his cold, precise but
admirably balanced mind. He was, I take it, the most perfect
reasoning and observing machine that the world has seen, but as
a lover he would have placed himself in a false position. He
never spoke of the softer passions, save with a gibe and a sneer.
  

Комментарии:

1. Что вы пробовали до сих пор? Вы изучали различные строковые методы Python?

2. Что происходит, когда предложение заканчивается вопросительным знаком, как это часто бывает с вопросами?

Ответ №1:

Похоже, вы просто хотите удалить все разрывы строк и завершающие пробелы…

может быть, что-то вроде…

 import re
sentences = [re.sub("^s*|s*$,"",re.sub("n","",each))  for each in open("book.txt").read().split(".")]
  

или если вкладки также являются проблемой…

 sentences = [re.sub("^s*|s*$","",re.sub("s "," ",each))  for each in open("book.txt").read().split(".")]
  

также разделить на ?,!, или . use …

 sentences = [re.sub("^s*|s*$","",re.sub("s "," ",each))  for each in re.split("[?.!]",open("book.txt").read())]
  

Комментарии:

1. Что, если я хочу разделить вопросительные знаки на точки, а также восклицательные знаки? Как мне это изменить?

2. Вместо использования метода разделения используйте re.split(шаблон, строка). Чтобы включить точки, восклицательные и вопросительные знаки, ознакомьтесь с моей правкой

3. В этом примере кавычки отключены. Должно ли это быть так, потому что цикл for находится в строке. Как это исправить?

4. Я только что исправил кавычки, теперь все должно быть в порядке