Python3- print(readline())返回空行

Python3- print(readline())返回空行

问题描述:

我使用下面的代码试图在文件result.txt中找到的字符串后面打印8行。该脚本肯定会找到字符串,但打印函数在找到字符串后返回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()) 

你的脚本在打印功能的工作,但你可以添加参数结束=“”,以避免线路的自动添加结束:

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

你确定你的文件内容? 随着4号线和此内容的文件:

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

而且这个脚本:

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-的问题是实际上该文件包含了没原始的HTML;吨包含新线,需要转换为文本,我原来的代码会工作,如果我用html2text。不过我还是使用了你的建议,所以谢谢你。 – treetop

只读取行中元组的响应结果。您的代码应该是这样的: -

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

解析完你想阅读的内容? –