Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python程序无法打印与其他行具有相同图案的一行_Python - Fatal编程技术网

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

Python程序无法打印与其他行具有相同图案的一行,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

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