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")
(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结尾。
linux下文本中的换行符是\n ,所以每一行的结尾一定有\n
还有就是windows下的txt中,换行符是\r\n所以结尾就是\r\n.
应该是f读取文件的形式其中每行结尾都包含换行符,不同于自己赋值的string不包含换行符,不是所有用到endswith()方法的语句在条件结尾都要加上"\n",主要是看这个string本身在赋值的时候是否有换行符的问题