2012-11-14 30 views
1

好吧,所以我已經閱讀了很多帖子,建議如何消除額外的空間,但無論出於什麼原因,似乎我不能將這些建議應用到我的系統,所以我在這裏尋求你的幫助。Python刪除輸入/行之間的空間

這是我的代碼的最後幾行:

for line in rline[start+5 : end] : 
     words = line.split() 
     word1 = int(words[1]) 
     print >>opennew, "%s%s" % (word1,line[30:]) 

和新的 「opennew」 文件是這樣的:

1  0.876153 0.152889 -0.047464 

    2  1.011880 -1.161641 -2.096289 

    3  0.883419 1.558736 1.966913 

    4  2.010367 -1.140725 1.053368 

雖然我真正想要的是:

1  0.876153 0.152889 -0.047464 
    2  1.011880 -1.161641 -2.096289 
    3  0.883419 1.558736 1.966913 
    4  2.010367 -1.140725 1.053368 

無論如何,我添加到代碼的東西從我的輸入中刪除額外的(不需要的)輸入/空間?

非常感謝您的幫助。

PS: (請不要問我爲什麼分開的代碼行,對於這個目的將在未來的(更好的)代碼的應用程序)

回答

7

嘗試剝離換行符掉line

line = line.rstrip("\n") 
+1

你不需要在Windows上做任何不同的事情。 – martineau

+0

@martineau真的嗎?我以爲你需要刪除回車以及Windows文件。我可能是錯的,因爲我無法測試它。 – squiguy

+1

如果數據以非二進制文本模式讀取或寫入文件,默認爲'open()'模式,那麼將自動使用Python自動處理平臺線結束約定的轉換。 – martineau

3

可以使用line = line.rstrip()或者刪除每行後的空白或更改print聲明忽略了自己尾隨換行符:

print >>opennew, "%s%s" % (word1,line[30:]), 
#          ^

然而,由於print語句的語法錯綜複雜它可能是更好的使用rstrip() ...

+0

我喜歡'打印任何內容',但同意它有時太微妙(或者因爲它不被理解和推測*錯誤*而被刪除)。如果由於某種原因,尾隨空格有意義,OP可能需要'.rstrip('\ n')' –

+0

他將一個人可讀的表格以明文形式轉儲到標準輸出。所以尾隨空白很可能不顯着,通常也不希望例如在將數據重定向到文件的情況下。 – ThiefMaster

0

由於@ThiefMaster或@squiguy建議,但另一種方式是:

import sys 
sys.stdout.write('%s%s' % (word1, line[30:])) 

雖然我'd可能去.rstrip

+0

感謝大家的建議,基於ThiefMaster的答案,我想我可以通過添加一個「-1」來消除行中的最後一個空格,而不是消除Python自己的換行符,這個問題是固定 print >> opennew,「%s%s」%(word1,line [30:-1]) – Justme

0

感謝你們所有的建議,基於ThiefMaster的答案,它發生在我身上,我可以通過添加一個「-1」消除行中的最後一個空白,而不是消除蟒蛇自己的斷行,這個問題得到了解決

print >>opennew, "%s%s" % (word1,line[30:-1]) 

另一種方式我嘗試過了

opennew.write (str(word1) + (line[30:]) + "") 

末額外的報價是消除額外的(不必要的)輸入/空間的人。它爲我工作,但老實說,我不知道爲什麼,你知道這些額外的報價做什麼?

謝謝