Python程序无法打印与其他行具有相同图案的一行
Python程序无法打印与其他行具有相同图案的一行 在我的输入文件中,最后一列是大陆名称。因为有三个条目以“Europe\n”模式结尾,但只打印第一个和最后一个条目。我正在Ubuntu 14.04中使用Python 3Python程序无法打印与其他行具有相同图案的一行,python,Python,Python程序无法打印与其他行具有相同图案的一行 在我的输入文件中,最后一列是大陆名称。因为有三个条目以“Europe\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
#!/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
对代码稍加修改即可显示问题:
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')
致:
i、 e.“删除空格后,行是否以'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 open('countries.txt') as fh:
for line in fh:
if line.strip().endswith('Europe'):
print line
如果与德国的连线是真的
,那么为什么不打印呢?请检查我的输出。我没有得到以德国而不是英国开始的行,如inputWell所示,如果包含print repr(line),line.endswith('Europe\n')
,会发生什么?我假设您复制了错误的输出,因为当我运行您提供的数据上的代码时,正如我预期的那样,我得到了以'France'
和'dermany'
开头的行。我从您建议的代码中得到了这一点<代码>'Germany\t96\t61\t\n'False
。我理解当前问题中的问题。谢谢你的帮助。
with open('countries.txt') as fh:
for line in fh:
if line.strip().endswith('Europe'):
print line