我有一个文件,每行写有不同的行星。我试图使用with函数进行迭代并打印,因此输出如下所示:
1 - mercury
2 - venus
etc...
但我的输出目前看起来像这样:
(1, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
(2, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
(3, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
(4, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>)
我的代码是:
with open("planets.txt") as p:
i=0
for line in p:
i += 1
print(i, '-', p)
我如何使用错误或者其他什么?
答案 0 :(得分:1)
而不是打印line
您打印p
- 文件本身:
print(i, '-', p)
此外,您可以使用enumerate功能:
,而不是使用新变量来计算行数with open("planets.txt") as p:
for i, line in enumerate(p, 1):
print(i, '-', line)
UPD:您还应该考虑这样一个事实:您从文件中获取的line
以换行符结尾,当您print(line)
之后,它会添加另一个换行符它由defaulf。所以你的输出看起来像这样:
1 - mercury
2 - venus
etc...
获取
1 - mercury
2 - venus
etc...
您需要为打印功能指定end=''
参数。这样:
print(i, '-', line, end='')
答案 1 :(得分:0)
您要打印line
而不是p
:
with open("planets.txt") as p:
i=0
for line in p:
i += 1
print(i, '-', line) #refers to each line in p rather than the file handler
答案 2 :(得分:0)
您应该将print(i, '-', p)
更改为print(i, '-', line)