Как удалить несколько пробелов в каждой строке и заменить одним пробелом? - PullRequest
1 голос
/ 17 июня 2020

Я новичок в написании сценариев и пытаюсь удалить несколько пробелов в строке и заменить их одним пробелом.

input.txt

Hello     world
Welcome     to     python

результат должен быть похож на

Hello world
Welcome to python

Я выполнил следующую команду:

with open ('input.txt', 'r') as i_f, open ('output.txt', 'w') as o_f:
    for line in i_f:
        o_f.write(re.sub('\s+',' ', line))

Мой результат выглядит примерно так:

Hello world Welcome to python

Я пытаюсь заменить несколько пробелов одним пробелом в каждой строке. Я не хочу объединять несколько строк в одну. Может ли кто-нибудь помочь мне удалить несколько пробелов и заменить их одним пробелом, не соединяя строки. Любая помощь будет оценена. Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

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

Поскольку в Python нет сокращенного символа для пробела символов, исключая новые строки, вам необходимо явно указать, какие пробельные символы вы хотите сопоставить:

with open ('input.txt', 'r') as i_f, open ('output.txt', 'w') as o_f:
    for line in i_f:
        # Match only tabs and spaces
        o_f.write(re.sub('[\t ]+',' ', line))

Если вы собираетесь работать с регулярными выражениями, я настоятельно рекомендую этот учебник . Это фантасти c.

0 голосов
/ 17 июня 2020

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

r' (?= |$)'

пустой строкой.

Запустите двигатель!

Я предположил любые пробелы в конце строки также должны быть удалены. Если пробелы в конце строки должны быть заменены одним пробелом, используйте:

r' (?= )'

или замените совпадения

r' +'

пробелом.

0 голосов
/ 17 июня 2020

Добавляйте символ новой строки в конец каждой написанной вами строки.

Или вы можете изменить свое регулярное выражение так, чтобы оно соответствовало только пробелам (в отличие от любых пробелов) или любому подмножеству пробельных символов, которое вы хотите объединить.

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