2012-12-07 93 views
1

我試圖讀取文件中的行並在可以工作的循環中打印它們,但是在每個打印語句後都會出現換行符。閱讀線條和循環播放文件對象

這裏是我的類

class FileReader: 
    """Reads a file from args""" 
    def __init__(self, args): 
     input = '' 
     with open(args, 'r') as rFile: 
      for line in rFile: 
       print(line) 

我的輸入文件是這樣的。 (在'$的是新線):

12 3$ 
2$ 
9$ 
5$ 
3 4$ 

我的輸出變爲:

12 3 

2 

9 

5 

3 4 

什麼是我得到這些空間的原因是什麼?

回答

3

當您遍歷文件時,所產生的行包括行尾的換行符。使用print()輸出這些行額外的換行符。

您可以使用.strip()從行的開始和結尾刪除空格,包括換行符。

如果您只有想要刪除最後一個換行符,請使用line[:-1]line.rstrip('\n')將其刪除。

最後但並非最不重要的,你也可以告訴print()不添加新行:

print(line, end='') 
0

每個print命令都會在最後自動添加換行符。由於你的文件在每一行的末尾都有一個換行符(按照定義),你的程序會連續輸出兩個換行符。

例如,試試這個:

for i in xrange(10): 
    print(str(i) + '\n') 

您將獲得具有同樣的「問題」爲你的代碼的東西。

如果您想修復該行爲,請將print(line)替換爲print(line.rstrip()),這將刪除每行末尾的所有空格字符。如果你的行以製表符或空格結束,這可能會有問題;在這種情況下,使用print line.rstrip('\n'),它只會刪除換行符。

+1

請注意,某些文件使用換行符+回車=兩個字符。更好地使用'line.rstrip()'。 – moooeeeep

+1

OP可能使用Python 3,因爲'print()'被用作函數。 –

+0

@moooeeeep:好點。我相應地編輯了答案,謝謝。 – HerrKaputt

0

如果不希望新的生產線做的,使用rstrip。例如:

print(line.rstrip())