Python程序在读取文本文件时打印额外的空行

use*_*603 3 python text file python-3.x

我正在使用 python 3.3。作为示例,我有一个包含三行文本的文本文件。我想选择一个数字,它将显示该行号的内容。由于某种原因,它打印了我想要的行,并在其下面打印了一个空行。

文本文件如下所示:

AAPL,Apple,700
P,Pandora,32
MW,Men's Warehouse,54.32
Run Code Online (Sandbox Code Playgroud)

如果 i 为 2,我得到的解释器输出:

>>
P,Pandora,32

>>
Run Code Online (Sandbox Code Playgroud)

代码在这里:

line_number = int(input('Enter the line number: '))
with open('C:/Python33/myprogramtests/filewrite1.txt') as f:
    i = 1
    for line in f:
        if i == line_number:
            break
        i += 1
    print (line)
Run Code Online (Sandbox Code Playgroud)

我确实在打印(行)后尝试了逗号,但它不起作用。我猜我错过了一些代码,这些代码只会打印该行而不是额外的空白行。

Jon*_*nts 5

您应该提供一个end=''toprint来抑制将等效项添加到输出的自动行为\n

我还会删除计数逻辑并用于islice提取您想要的行,例如:

from itertools import islice

line_number = int(input('Enter the line number: '))
with open('yourfile') as fin:
    print(next(islice(fin, line_number - 1, line_number), ''), end='')
Run Code Online (Sandbox Code Playgroud)

如果你想使用计数方法,那么你可以使用enumerate从 1 开始,例如:

for idx, line in enumerate(fin, start=1):
    if idx == line_number:
        print(line, end='')
        break
Run Code Online (Sandbox Code Playgroud)