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()
移动光标。
答
只读取行中元组的响应结果。您的代码应该是这样的: -
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
解析完你想阅读的内容? –
@ Marsa-的问题是实际上该文件包含了没原始的HTML;吨包含新线,需要转换为文本,我原来的代码会工作,如果我用html2text。不过我还是使用了你的建议,所以谢谢你。 – treetop