【发布时间】:2020-11-05 11:33:02
【问题描述】:
我有一个像这样的输入 file.txt:
3
2
A
4
7
B
1
9
5
2
0
我正在尝试读取文件并且
- 找到
A时,打印下面两行的行 - 找到
B后,打印下面4行的那一行
我当前的代码和当前输出如下:
with open('file.txt') as f:
for line in f:
if 'A' in line: ### Skip 2 lines!
f.readline() ### Skipping one line
line = f.readline() ### Locate on the line I want
print(line)
if 'B' in line: ## Skip 4 lines
f.readline() ### Skipping one line
f.readline() ### Skipping two lines
f.readline() ### Skipping three lines
line = f.readline() ### Locate on the line I want
print(line)
'4\n'
7
'1\n'
'9\n'
'5\n'
2
>>>
正在打印我想要的值,但也在打印4\n,1\n...,除此之外,我还需要写几个f.realines(),这是不实用的。
有没有更好的方法来做到这一点?
我的预期输出是这样的:
7
2
【问题讨论】:
-
你是如何运行代码的?如果您使用的是 IPython 或 Jupyter 笔记本,这可能就是您获得额外输出的原因,因为我看不出有任何理由
'1\n'会根据您拥有的代码在输出中显示。 -
我无法重现您所描述的内容。唯一的事情是它打印包含换行符的行(7 和 2)。您可以使用
line.strip()剥离结果行 -
没有第一条评论:尝试使用虚拟变量“消费”
f.readline():_ = f.readline() -
我在 Ubuntu shell 上以测试模式运行它。
标签: python-3.x text-files readline