2015-07-04 4 views
1

Я пытался обрезать пробелы в Python с использованием s.strip(), как это, но это работает только на первой линии:Обрезать пробелы из нескольких строк

Вход:

a 
    b 

Выход:

a 
    b 

Как его получить, чтобы обрезать пробелы из нескольких строк? Вот мой код:

Код:

import sys 

if __name__ == "__main__": 
    text_file = open("input.txt", "r") 
    s = text_file.read() 
    s = s.strip() 
    text_file.close() 
    with open("Output.txt", "w") as text_file: 
     text_file.write(s) 

ответ

1

Проблема возникает из-за того, что string.strip() разделяет только конечные и ведущие пробелы, не разбивая пробелы посередине.

Для ввода -

a 
    b 

И делать text_file.read().

Фактическая строка представление будет -

' a\n b' 

s.strip() бы лишить хвостовых и ведущие пробельные, но не \n и пространства в середине, следовательно, вы получаете несколько строк и пробелов в середине не удаляются.

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

Пример -

import sys 

if __name__ == "__main__": 
    with open("input.txt", "r") as text_file, open("Output.txt", "w") as out_file: 
     for line in text_file: 
      out_file.write(line.strip() + '\n') 
7

Сплит линии, полосы каждый, а затем вновь присоединиться:

s = text_file.read() 
s = '\n'.join([line.strip() for line in s.splitlines()]) 

Это использует str.splitlines() method вместе с str.join() method ставить снова соединяются между собой.

Лучше все еще, читайте файл по строкам, обрабатывайте и записывайте за один раз; таким образом вам нужно гораздо меньше памяти для всего процесса:

with open("input.txt", "r") as infile, open("Output.txt", "w") as outfile: 
    for line in infile: 
     outfile.write(line.strip() + '\n') 
+0

Параметр '' infile' outfile' методика так хороша. :) –

3

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

for line in s.splitlines() 

перебирать каждую строку и использовать strip() для них.

+0

Я получил эту ошибку: 'Файл" convert.py ", строка 5, в для строки в text_file.splitlines(): AttributeError: объект 'file' не имеет атрибутов 'splitlines'' –

+0

Я считаю, что вы сделали что-то не так. Позвольте мне редактировать и отправлять полный код –

+2

@RockLee: это потому, что объект 'text_file' не является строкой; Himanshu предназначался для использования 's.splitlines()'. –

Смежные вопросы