2017-08-26 11 views
0

result.txtファイルにある文字列の後ろに8行を表示するために、以下のコードを使用しています。スクリプトは文字列を確実に探していますが、print関数は実際の行の内容ではなく、文字列が見つかった後に空の8行を返します。Python3- print(readline())空行を返す

request = urllib.request.Request(websiteurl) 
response = urllib.request.urlopen(request) 
data = response.read() 
fw = open('result1.txt', 'w') 
fw.write(str(data)) 
fw.close() 
with open('result1.txt', 'r') as f: 
     for line in f: 
       if 'DeMarco' in line: 
         for _ in range(8): 
           print (f.readline()) 

答えて

0

あなたのスクリプトが働いているが、あなたはラインの自動的に追加終わりを避けるために、印刷機能に「=」パラメータの終わりを追加する可能性があります。

print (f.readline(), end='') 

はあなたのファイルの内容についてよろしいですか?

0 
a DeMarco z 
1 
2 
3 
4 
5 
6 
xDeMarcoPaul 
A 
B 
DeMarco 
C 
D 
E 
F 

そして、このスクリプト:4行とこのコンテンツファイルで

with open('result1.txt', 'r') as f: 
    for line in f: 
    if 'DeMarco' in line: 
     for _ in range(4): 
     print (f.readline(), end='') 

私はこの出力があります。

1 
2 
3 
4 
A 
B 
DeMarco 
C 

をしかし、8次の行に、また存在する場合パターンDeMarcoは、f.readline()がカーソルを移動するため検出されません。

+0

Marsa-問題は、ファイルがdidnの生のHTMLが含まれていることを実際にした@; tは新しい行を含み、テキストに変換する必要私が使用している場合は、私の元のコードが働いているだろうhtml2text。私はしかし、あなたの提案を追加しましたので、それに感謝します。 – treetop

0

応答結果を行のタプルで読み取るだけです。あなたのコードは次のようになります -

response = urllib.request.urlopen(websiteurl) 
data = response.read() 
fw = open('result1.txt', 'w') 
fw.write(str(data)) 
fw.close() 
lines = tuple(open('result1.txt', 'r')) 
for x in lines: 
    if 'google' in x: 
     for y in range(8): 
      print(x) 
+0

問題は、実際にはファイルに未処理のhtmlが含まれていて、テキストへの変換が必要だったことです.html2textを使用していれば元のコードがうまくいきました。 – treetop

+0

何を読みたいのですか? –

関連する問題