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()一样,会创建一个新字符串,而不是对字符串进行行内修改。