2013-03-11 1 views
0

Я мог бы сделать следующее в python, чтобы очистить и удалить нежелательные пробелы, но можно сделать только через терминал другими способами, например sed, grep или что-то в этом роде?Как сделать str.strip() для каждой строки в текстовом файле? Unix

outfile = open('textstripped.txt','w+','utf8') 
for i in open('textfile.txt','r','utf8'): 
    print>>outfile, i.strip() 
+0

Он может, но то, что проблема, которую вы пытаетесь решить? –

+0

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

ответ

1
$ cat input.txt | sed 's/^[ \t]*//;s/[ \t]*$//' > output.txt 

Это избавляется от передних и задних белых пространств ..

EDIT: sed -e "s/^[ \t]+//; s/[ \t]+$//" -i .bk input.txt

Это делает в редактировании файла место, и сохраняет резервные копии на input.txt.bk (и сохраняет процесс в соответствии с некоторыми предлагаемыми)

+0

pardon my regex noobiness, не могли бы вы объяснить sed? '^ [\ t] *' означает заголовок пробелов, а '[\ t] * $' означает конечные пробелы вправо? будет '[\ s \ t] *' делать то же самое, что '[\ t] *'? – alvas

+0

'\ s' не распознается всеми версиями Sed –

+0

@ 2er0' [\ s] * 'должен быть в состоянии заменить' [\ t] * '. Однако предыдущая форма может иметь проблемы с переносимостью в зависимости от того, какой sed вы используете. например на моем ноутбуке Mac я должен использовать '[\ t] *' – zzk

1

sed -E "s/(^[ \t]+|[ \t]+$)//" <input> output

Или если у вас есть GNU-версию, соответствующую требованиям к СЭД:

sed -E "s/^\s+|\s+$//g" <in> out

Если у вас есть Mac, я получаю recommed homebrew и установка gnu-sed. Затем alias sed=gsed.

2

Использование perl в командной строке:

perl -lpe 's/^\s+//; s/\s+$//' file.txt > stripped.txt

2

Это решение основано на SED человека странице:

sed 'y/\t/ /;s/^ *//;s/ *$//' input > output 

http://www.gnu.org/software/sed/manual/sed.html#Centering-lines

Описание:

y\t/ / заменяет вкладки с пробелами

s/^ *// удаляет ведущие пробелы

s/ *$// удаляет конечные пробелы