2013-10-14 70 views
-1

首先,我是python的新手,所以也許我的代碼有點奇怪或接近是錯誤的,但它的工作原理,所以就是這樣。python lstrip('')刪除行

我已經googleing對於這個問題,但無法找到任何人誰寫的,我這樣寫

1 2 3 4  5 


    2 2 2 2  2 


    3 3 3 3  3 

等這個巨大的名單,請注意,它是空間,而不是標籤,這是我無法改變的,因爲我正在使用ls-dyna的打印輸出 所以我使用這個腳本來刪除數字之前的空格,因爲它們在嘗試將數字格式化爲矩陣,然後我刪除後空行

for line in input: 
    print >> output, line.lstrip(' ') 

,但由於某種原因,我有4442行(這裏我的意思是書寫行,因爲它們枚舉很容易追蹤),但輸出只有4411,所以它刪除了31行,我需要的數字 爲什麼會這樣?

+0

你可以顯示你需要的輸出類型嗎? – Vivek

+0

它可能會刪除空行 –

+0

您提供的代碼顯示正常。你說「* ...它刪除了31行,我需要... *」 - 你如何能夠識別這些? –

回答

0

lstrip()不會刪除行,因爲它在print語句中使用,該語句將總是附加一個換行符(使用它的方式)。但是for line in input可能會以意想不到的方式逐行瀏覽行列表,即它可以跳過線條或以你沒有想到的方式將它們組合起來。

也許換行符和回車符導致這個奇怪的問題。

我建議將.lstrip(' ')帶走以進行測試,並將輸出與輸入進行比較以找出發生變化的地方。可能您應該使用output.write(line)來規避print語句的所有自動操作(特別是追加換行符)。

然後,您應該在輸出時使用特殊的分隔符(output.write('###' + line)或類似的名稱)以瞭解如何通過輸入進行迭代。

+0

首先感謝output.write命令,就像我說的我是python的新手一樣,並且一直在想爲什麼它總是換行,所以爲我節省了一些編程時間。 我現在有4442行的原因是因爲我可以在原始數據中向下滾動並且它被枚舉,但現在我沒有空行,{.lstrip('')}輸出4431行但不是全部除此之外,輸入和輸出之間沒有區別 –

+0

您應該嘗試確定輸入中的哪些點會丟失行。瞭解發生什麼可能已經解決了這個問題。你可以使用較小的輸入(文件的一半或類似)。 – Alfe