Python程序读取文本文件时多打印了一行空行

3 投票
4 回答
6377 浏览
提问于 2025-04-18 17:35

我在用Python 3.3。手头有一个文本文件,里面有三行文字,作为例子。我想选择一个行号,然后显示那一行的内容。但是不知道为什么,它会打印出我想要的那一行,下面却多打印了一行空白。

这个文本文件长这样:

AAPL,Apple,700
P,Pandora,32
MW,Men's Warehouse,54.32

如果我选择的行号是2,解释器输出的结果是:

>>
P,Pandora,32

>>

这是我的代码:

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)

我试过在print(line)后面加个逗号,但没用。我想我可能漏掉了什么代码,导致它只打印出那一行,而不是多出一行空白。

4 个回答

0

如果你想去掉字符串末尾的换行符,可以使用 rstrip('\n') 这个方法:

print line.rstrip('\n')
1

你还可以使用“strip()”这个方法,它可以去掉多余的空格。在你的例子中:
print(line.strip())

或者你也可以先把结果赋值给一个变量:
line = line.strip()
print(line)

3

print 这个命令在字符串的末尾会自动加上 \n\r,而你之前看到的那一行已经有一个换行符了,所以就是这样表现的。你可以试试用下面的方式:

print(line, end="")

希望这对你有帮助!

5

你应该在print里加上end='',这样可以阻止它自动在输出后面加上换行符\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='')

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

for idx, line in enumerate(fin, start=1):
    if idx == line_number:
        print(line, end='')
        break

撰写回答