我正在使用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)
我确实在打印(行)后尝试逗号,但它没有用。 我猜我错过了一些只会打印线而不是额外的空白行的代码。
答案 0 :(得分:4)
您应提供end=''
至print
,以取消向输出添加等效\n
的自动行为。
我还会删除计数逻辑并使用{{1}}来提取您想要的行,例如:
islice
如果您想使用计数方法,那么您可以从1开始使用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='')
,例如:
enumerate
答案 1 :(得分:3)
print
在字符串的末尾添加\n
和\r
,并且考虑到您已阅读的行已经在最后有一个新行,这就是行为。您可以改为使用:
print(line, end="")
希望这有帮助!
答案 2 :(得分:1)
你也可以使用" strip()"删除多余空格的方法。在你的情况下:
打印(line.strip())
或完成作业:
line = line.strip()
打印(线)
答案 3 :(得分:0)
如果要删除字符串的尾随新行,可以使用rstrip('\ n'):
print line.rstrip('\n')