Python程序无法打印与其他行具有相同模式的一行

时间:2014-10-10 10:10:20

标签: python

Python程序无法打印与其他行具有相同模式的一行

在我的输入文件中,最后一列是大陆名称。由于有三个条目以"欧洲\ n"结尾。模式,但只打印第一个和最后一个。我在Ubuntu 14.04中使用Python 3

#!/usr/bin/python

fh = open('countries.txt')
for line in fh:
        if line.endswith('Europe\n'):
           print line
exit()

输入:

India   1267    746     Asia
Mexico  762     78      North America
France  211     55      Europe
Japan   144     120     Asia
Germany 96      61      Europe
England 94      56      Europe

输出:

France  211 55  Europe

England 94  56  Europe

1 个答案:

答案 0 :(得分:0)

对代码进行略微修改会显示问题:

for line in fh:
    print repr(line), line.endswith('Europe\n')

给出:

'India   1267    746     Asia\n' False
'Mexico  762     78      North America\n' False
'France  211     55      Europe\n' True
'Japan   144     120     Asia\n' False
'Germany 96      61      Europe\n' True
'England 94      56      Europe' False

最后一行包含换行符'\n',因此无法打印。您应该从以下地址更改测试:

line.endswith('Europe\n')

为:

line.strip().endswith('Europe')

即。 "一旦删除空格,行是否以'Europe'结尾?" 这样:

'India   1267    746     Asia\n' False
'Mexico  762     78      North America\n' False
'France  211     55      Europe\n' True
'Japan   144     120     Asia\n' False
'Germany 96      61      Europe\n' True
'England 94      56      Europe' True

并在您的代码中提供所需的结果:

France  211     55      Europe

Germany 96      61      Europe

England 94      56      Europe

请注意,您应该使用上下文管理器with处理文件:

with open('countries.txt') as fh:
    for line in fh:
        if line.strip().endswith('Europe'):
            print line