Удалить пустую строку из текста в python - PullRequest
0 голосов
/ 04 мая 2020

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

words= re.sub(r"[^a-z']+",' ',text).upper().lstrip()

Вывод, который я получаю, как показано ниже. Но я также хочу убрать пробел между двумя строками. Но я также хочу удалить пустую строку, например, между I AM FINE и THANK YOU.

HI
HOW ARE YOU
I AM FINE

THANK YOU

AND YOU. 

Как удалить эту пустую строку из текста?

Требуемый выход

HI
HOW ARE YOU
I AM FINE
THANK YOU
AND YOU. 

Ответы [ 4 ]

0 голосов
/ 04 мая 2020

Вы можете попробовать text.replace('\n\n', '\n'), чтобы удалить двойные новые строки.

words = re.sub(r"[^a-z']+",' ',text.replace('\n\n', '\n')).upper().lstrip()

Или, если число новых строк неизвестно, попробуйте:

while '\n\n' in text:
    text = text.replace('\n\n', '\n')
words = re.sub(r"[^a-z']+",' ',text).upper().lstrip() # original code
0 голосов
/ 04 мая 2020

Почему бы вам просто не использовать split и join, чтобы удалить пустые строки? Пример:

s="""HI
HOW ARE YOU

I AM FINE
THANK YOU
AND YOU. """

output = '\n'.join(line for line in s.split('\n') if line)
print(output)

Вывод:

HI
HOW ARE YOU
I AM FINE
THANK YOU
AND YOU.
0 голосов
/ 04 мая 2020

Попробуйте добавить .replace('\n', '') к вашему words= re.sub(r"[^a-z']+",' ',text).upper().lstrip(), если вы хотите сохранить свой код таким, какой он есть. Это заменит пустую строку, иначе вводим ничего.

Комбинированный код: words= re.sub(r"[^a-z']+",' ',text).upper().lstrip().replace('\n', '')

РЕДАКТИРОВАТЬ: Краткое объяснение

0 голосов
/ 04 мая 2020

Использование:

text = """HI
HOW ARE YOU
I AM FINE

THANK YOU

AND YOU."""


words = re.sub(r"(?<=\n)\W+", '', text)
print(words)

Это печатает:

HI
HOW ARE YOU
I AM FINE
THANK YOU
AND YOU.

Вы можете проверить регулярное выражение здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...