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
答案 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