2014-10-10 41 views
0

Python程序无法打印有像其他线路Python程序无法打印有像其他线路一样的图案一行

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

#!/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 

回答

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 
+0

如果与德国的合作是'真',那么为什么它不打印?请检查我的输出。如果输入 – user3690643 2014-10-10 10:22:39

+0

中显示的是德国而不是英格兰,那么我会得到什么结果呢?如果包含print repr(line),line.endswith('Europe \ n')',会发生什么?我认为你已经复制了错误的输出,就像我运行你提供的关于你提供的数据的代码一样,我得到了'法国'和'德国'开始的行,正如我所料。 – jonrsharpe 2014-10-10 10:24:14

+0

我从你建议的代码中得到了这一点。德国\ t96 \ t61 \ t欧洲\ t \ n'假'。我理解当前问题中的问题。感谢帮助。 – user3690643 2014-10-10 10:32:50

相关问题