2012-01-11 5 views
0

Как удалить пробелы в начале каждой строки в файле с помощью python?Удалить пробелы в начале каждой строки в файле в python?

У меня есть файл myfile.txt со строками, как показано ниже в нем:

_ _ Amazon.inc 
Arab emirates 
_ Zynga 
Anglo-Indian 

Эти подчёркивания пространства.

Код должен быть таким, чтобы он проходил через каждую строку файла и удалял все эти пробелы в начале строки.

Я пробовал использовать lstrip, но это не работает для нескольких строк и readlines() тоже.

Использование петли for может сделать ее лучше?

+2

Я собирался предложить использовать 'lstrip()', но, похоже, вы уже это пробовали. Можете ли вы опубликовать код, который у вас есть сейчас, чтобы мы могли делать предложения вместо того, чтобы писать его снова? –

+0

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

ответ

2

Предполагая, что ваш ввод данных в inFile.txt, и вы хотите, чтобы написать этот файл output.txt, то проще всего использовать list comprehension:

inf = open("infile.txt") 
stripped_lines = [l.lstrip() for l in inf.readlines()] 
inf.close() 

# write the new, stripped lines to a file 
outf = open("output.txt", "w") 
outf.write("".join(stripped_lines)) 
outf.close() 
2

Все, что вам нужно сделать, это прочитать строки файла один за другим и удалить ведущие пробелы для каждой строки. После этого, вы можете присоединиться к вновь линии, и вы получите обратно оригинальный текст без пробелов:

with open('myfile.txt') as f: 
    line_lst = [line.lstrip() for line in f.readlines()] 
    lines = ''.join(line_lst) 

print lines 
+0

@MartinGeisler Спасибо за редактирование. – jcollado

1

Чтобы прочитать строки из myfile.txt и писать их output.txt использовать

with open("myfile.txt") as input: 
    with open("output.txt", "w") as output: 
     for line in input: 
      output.write(line.lstrip()) 

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

Приведенный выше код работает в Python 2.5 и более поздних версиях из-за ключевого слова with. Для Python 2.4 вы можете использовать

input = open("myfile.txt") 
output = open("output.txt", "w") 
for line in input: 
    output.write(line.lstrip()) 

если это просто небольшой скрипт, где файлы будут автоматически закрыты в конце. Если это является частью более крупной программы, то вы хотите явно закрыть файлы, как это:

input = open("myfile.txt") 
try: 
    output = open("output.txt", "w") 
    try: 
     for line in input: 
      output.write(line.lstrip()) 
    finally: 
     output.close() 
finally: 
    input.close() 

Вы говорите, что вы уже пробовали с lstrip и что он не работает на нескольких линиях. «Трюк» - запустить lstrip на каждой отдельной строке, которую я делаю выше. Вы можете попробовать код online, если хотите.

+0

hmmm! показывает синтаксическую ошибку –

+0

Я предполагаю, что вы должны использовать Python 2.4, у которого нет ключевого слова. Я переписал. –

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