Python -- 操作字符串[3/3]

发布时间:2019-09-23 17:03:07编辑:auto阅读(1515)

     1,splitlines()


    1. yuan@ThinkPad-SL510:~$ ipython -nobanner 
    2.  
    3. In [1]: multiline_string = """This 
    4.    ...: is 
    5.    ...: a multiline 
    6.    ...: piece of 
    7.    ...: text""" 
    8.  
    9. In [2]: multiline_string.spli 
    10. multiline_string.split       multiline_string.splitlines 
    11.  
    12. In [2]: multiline_string.split() 
    13. Out[2]: ['This''is''a''multiline''piece''of''text'
    14.  
    15. In [3]: lines = multiline_string.splitlines() 
    16.  
    17. In [4]: lines 
    18. Out[4]: ['This''is''a multiline''piece of''text'

    糊涂了?仔细看13行和18行的a multilines。

     

    2,join()


    1. yuan@ThinkPad-SL510:~$ ipython -nobanner 
    2.  
    3. In [1]: some_list = ['one','two','three','four'
    4.  
    5. In [2]: ','.join(some_list) 
    6. Out[2]: 'one,two,three,four' 
    7.  
    8. In [3]: '\t'.join(some_list) 
    9. Out[3]: 'one\ttwo\tthree\tfour' 
    10.  
    11. In [4]: ''.join(some_list) 
    12. Out[4]: 'onetwothreefour' 

    很简单不是吗?

    没那么简单,请看:

     

    1. yuan@ThinkPad-SL510:~$ ipython -nobanner 
    2.  
    3. In [1]: some_list = range(10
    4.  
    5. In [2]: some_list 
    6. Out[2]: [0123456789
    7.  
    8. In [6]: ",".join(some_list) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /home/yuan/<ipython console> in <module>() TypeError: sequence item 0: expected string, int found
    9.  
    10.  
    11. In [4]: ",".join([str(i) for i in some_list]) 
    12. Out[4]: '0,1,2,3,4,5,6,7,8,9' 
    13.  
    14. In [5]: ",".join(str(i) for i in some_list) 
    15. Out[5]: '0,1,2,3,4,5,6,7,8,9' 

    很显然join只能处理字符串序列,str()即可。

     

    3,replace()


    1. yuan@ThinkPad-SL510:~$ ipython -nobanner 
    2.  
    3. In [1]: replacable_string = "trancendental hibernational nation" 
    4.  
    5. In [2]: replacable_string.replace("nation","natty"
    6. Out[2]: 'trancendental hibernattyal natty' 

    这个没啥好说的,很简单

    但是必须说下:replace()和前边说的strip()一样,会创建一个新字符串,而不是对字符串进行行内修改。

关键字