我可以在python中執行以下操作來清理並去除不需要的空格,但是可以通過終端通過其他方式完成,例如sed
,grep
或其他方法?如何爲文本文件中的每一行做str.strip()? Unix
outfile = open('textstripped.txt','w+','utf8')
for i in open('textfile.txt','r','utf8'):
print>>outfile, i.strip()
我可以在python中執行以下操作來清理並去除不需要的空格,但是可以通過終端通過其他方式完成,例如sed
,grep
或其他方法?如何爲文本文件中的每一行做str.strip()? Unix
outfile = open('textstripped.txt','w+','utf8')
for i in open('textfile.txt','r','utf8'):
print>>outfile, i.strip()
$ cat input.txt | sed 's/^[ \t]*//;s/[ \t]*$//' > output.txt
這擺脫了開頭和結尾空格的..
編輯:sed -e "s/^[ \t]+//; s/[ \t]+$//" -i .bk input.txt
這確實到位文件編輯,並保存備份input.txt.bk (並且節省了一些建議的過程)
請原諒我的正則表達式noobiness,你能解釋一下sed嗎? '^ [\ t] *'表示標題空格,'[\ t] * $'表示空格後面的空格是正確的?會不會''\ s \ t] *'和'[\ t] *'做同樣的事情? – alvas 2013-03-11 04:00:43
'\ s'不被Sed的所有版本識別 – 2013-03-11 04:03:14
@ 2er0'[\ s] *'應該能夠替換'[\ t] *'。但是,以前的表單可能存在可移植性問題,具體取決於您使用的是哪個sed。例如在我的Mac筆記本電腦上,我必須使用'[\ t] *' – zzk 2013-03-11 04:03:36
sed -E "s/(^[ \t]+|[ \t]+$)//" <input> output
或者,如果你有一個兼容的GNU版本SED的:
sed -E "s/^\s+|\s+$//g" <in> out
如果你有一個蘋果,我推薦讓homebrew
和安裝gnu-sed
。 然後,alias sed=gsed
。
在命令行中使用perl
:
perl -lpe 's/^\s+//; s/\s+$//' file.txt > stripped.txt
該方案基於SED手冊頁:
sed 'y/\t/ /;s/^ *//;s/ *$//' input > output
http://www.gnu.org/software/sed/manual/sed.html#Centering-lines
說明:
y\t/ /
替換標籤用空格
s/^ *//
刪除前導空格
s/ *$//
將刪除尾隨空格
它可以,但你想解決什麼問題? – 2013-03-11 03:53:28
我只是試圖去除文本文件中的所有行,因爲我的註釋器總是鍵入多餘的尾部空格,有時也會標題多餘的空格。 – alvas 2013-03-11 03:56:33