问答详情
源自:1-1 正则简介

为什么查找以"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")


提问者:Naomi_Rbt 2016-09-13 15:42

个回答

  • 慕斯5482594
    2016-10-12 16:40:39

    (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结尾。 

  • skipper丨
    2016-09-13 16:35:30

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

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

  • ExcaliburFate1991
    2016-09-13 16:18:03

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