Python程序读取文本文件时多打印了一行空行
我在用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