【4.8】python里splitlines、split

一、split

Python的split方法函数可以分割字符串成列表,默认是以空格作为分隔符sep来分割字符串。那么行的分割呢?

In [1]: s = "www jeapedu com"
 In [2]: print s.split()
 ['www', 'jeapedu', 'com']

当然可以改变sep分割字符串为其他字符串。

In [6]: t = "www.jeapedu.com"
 In [7]: print t.split(".")
 ['www', 'jeapedu', 'com']

二、splitlines

python的字符串类里还提供了splitlines方法函数。

splitlines(...)
 S.splitlines(keepends=False) -> list of strings

Return a list of the lines in S, breaking at line boundaries.
 Line breaks are not included in the resulting list unless keepends
 is given and true.

splitlines函数什么意思呢?

u = "www.jeapedu.com\nwww.chinagame.me\nwww.quanzhan.org"
 print u.splitlines()
 ['www.jeapedu.com', 'www.chinagame.me', 'www.quanzhan.org']

这个例子不好,因为用split('\n')也可以分割成上面的结果。

u = "www.jeapedu.com\nwww.chinagame.me\nwww.quanzhan.org"
 print u.split("\n")
 ['www.jeapedu.com', 'www.chinagame.me', 'www.quanzhan.org']

结果一样,但是下面的测试用例就必须用splitlines了。

t = '''www.jeapedu.com
 www.chinagame.me
 www.quanzhan.org
 '''
 print t.splitlines()
 ['www.jeapedu.com', ' www.chinagame.me', ' www.quanzhan.org']

结果不太好,用strip函数去掉字符串前后的空格。

好,至此splitlines的基本使用已经解析完成,那splitlines里的参数keepends又是什么意思呢?

t = '''www.jeapedu.com
 www.chinagame.me
 www.quanzhan.org
 '''
 print t.splitlines()
 print t.splitlines(True)

默认splitelines参数keepends为False,意思是不保留每行结尾的\n, 而keepends为True时,分割的每 一行里尾部会有\n。

总结,splitlines是按行分割字符串,返回值也是个列表。

三、讨论

3.1 split通过多个字符分割字符串

Python中的spilt方法只能通过指定的某个字符分割字符串,如果需要指定多个字符,需要用到re模块里的split方法。

例子:

>>> import re
>>> a = "Hello world!How are you?My friend.Tom"
>>> re.split(" |!|\?|\.", a)  
['Hello', 'world', 'How', 'are', 'you', 'My', 'friend', 'Tom']

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn