2014-03-26 54 views
0

我試圖打印行和文本/ html文件的行中替換單詞,但無法這樣做,因爲python(2.7)正在逐字符讀取它的字符。我究竟做錯了什麼?蟒蛇打印每一個字符在新行

下面是代碼和輸出:

​​3210

我應該得到的輸出(顯示在這裏只有第一行):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 

輸出我得到:

< 
! 
D 
O 
C 
T 
Y 
P 
E 
. 
. 
. 
+1

提示1:遍歷文件每次都會給你一條線,並遍歷字符串爲您提供了一個字符每次。提示2:'infile'不是一個文件,它是一個字符串。 – Kevin

回答

2

你應該儘量file.readlines()而不是作爲如下:

infile = open('filename').readlines() 
for line in infile: 
    print line 

This循環遍歷每行而不是文件中的每個字符。

Output: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+0

謝謝!完美的作品 – dsauce

+0

@PreritAhuja:很高興你發現兩個答案都有幫助;對不起,你只能將** 1 **標記爲已接受。 –

9

您正在循環一個字符串,這會產生單個字符。

不要讀一氣呵成文件,只需遍歷文件對象:

with open('filename') as infile: 
    for line in infile: 
     print line 

我使用的文件作爲上下文管理在這裏也(with open(..) as localname);當with塊退出時,Python現在會自動關閉該文件。

根據需要循環讀取文件對象,避免將整個文件讀入內存。

其他的選擇是閱讀與file.readlines() method一氣呵成作爲單獨的行文件:

infile = open('filename').readlines() 

或讀取數據與str.splitlines()分裂:

infile = open('filename').read().splitlines() 
+0

感謝您的明確解釋。我一直在尋找這一段時間已經:-) – Grimmy

+0

絕對是最好和最完整的答案在這裏 – Grezzo