在Python中的endswith函数中发生了什么?

时间:2016-10-07 01:08:46

标签: python-2.7

我有一个名为test.txt

的文件
182.7 100.0
182.6 100.0
182.8 100.0

我想确保天气线以数字100.0结束: 所以我使用以下代码:

for line in open('test.txt','rt'):
    print repr(line),line.endswith('100.0\n')
    print

但是Ubuntu的输出是:

  

'182.7 100.0 \ r \ n'错误

     

'182.6 100.0 \ r \ n'错误

     

'182.8 100.0'False

但是Windows Server 2008中的输出是:

  

'182.7 100.0 \ n'True

     

'182.6 100.0 \ n'真实

     

'182.8 100.0'False

我已经在开放功能中使用rt,那么为什么不同系统之间存在差异呢?

2 个答案:

答案 0 :(得分:2)

函数strip()可以处理结束的换行符,它独立于所使用的操作系统,代码可以是

print "{line} {expr}".format(line=repr(line), expr=line.rstrip().endswith('100.0'))

答案 1 :(得分:1)

谢谢!答案现在明显了吗?该文件是在Windows上创建的,其中的行以"\r\n"结尾,而不是"\n"。只要您在文本模式下阅读 Windows上的文件,Python就可以隐藏它。但是你在Linux上阅读了这个文件,其中" text"和"二进制"模式不存在,你可以得到文件中的任何字节。

我的建议是在你移动文件的任何平台上强制行结束到本机约定。除此之外,在Python 2中,您可以在"通用换行模式"中打开文件。相反,为briefly explained here