为了账号安全,请及时绑定邮箱和手机立即绑定

为什么查找以"imooc"结尾的语句需要加"\n" line.endswith("imooc\n")?

endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。

\n 换行符,相当于转义,为什么不加的话就找不到匹配项呢?是否所有用到endswith()方法的语句在条件结尾都要加上"\n"? 

谢谢。

def find_imooc(fname):
        f = open(fname)

        for line in f:
                if line.startswith('imooc') and line.endswith("imooc\n"):
                        print line
find_imooc("test")


正在回答

3 回答

(1)linux下

vi test
111
222
333

(2) python下

for循环
f = open('test')
for i in f:
    print i
显示会多一个换行符,如下
111

222

333

f.seek(0)
s = []
for i in f:
    s.append(i)
print s
显示:(会有一个\n) 只是我们肉眼看不到。
['111\n', '222\n', '333\n']

为什么是\n  ?  os.linesep字符串给出当前平台使用的行终止符 (windows ‘\r’)
import os
os.linesep

所以你的问题,是\n结尾。 

0 回复 有任何疑惑可以回复我~

linux下文本中的换行符是\n ,所以每一行的结尾一定有\n

还有就是windows下的txt中,换行符是\r\n所以结尾就是\r\n.

0 回复 有任何疑惑可以回复我~

应该是f读取文件的形式其中每行结尾都包含换行符,不同于自己赋值的string不包含换行符,不是所有用到endswith()方法的语句在条件结尾都要加上"\n",主要是看这个string本身在赋值的时候是否有换行符的问题

0 回复 有任何疑惑可以回复我~
#1

Naomi_Rbt 提问者

哎,似乎只能这么理解了。。。?不知道为什么python的help(endswith) 就出不来。。
2016-09-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么查找以"imooc"结尾的语句需要加"\n" line.endswith("imooc\n")?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信