python關於分割與拼接的那些事


1.split分割

基於re模塊和正則表達式對象的方法split(),以后再做學習

基於字符串的split()方法 :字符串對象的split()方法也只能處理非常簡單的情況,而且不支持多個分隔符,對分隔符周圍可能存在的空格也無能為力.當需要一些更為靈活的功能是,應該使用re.split()方法.                                                                                                                                                                                       

函數原型:str.split(s,num)[n]

s:表示指定的分隔符,不寫的話,默認是空格(’ ‘)。如果字符串中沒有給定的分隔符時,則把整個字符串作為列表的一個元素返回。 

num:表示分割次數。如果指定了參數num,就會將字符串分割成num+1個子字符串,並且每一個子字符串可以賦給新的變量。

[n]:表示選取第n個分片,n表示返回的list中元素下標,從0開始的。 

split()當不帶參數時以空格進行分割,不管空格在哪,或者有幾個.帶參數時,以該參數進行分割。 

2.strip()方法用來從字符串的開始和結尾處去掉字符

lstrip()從左側開始去除字符,默認去除空格符,也可指定其他字符.

rstrip()從右側開始去除字符,默認去除空格符,也可指定其他字符.

>>>t = '----hello===='

>>>t.lstrip('-')

'hello====='

>>>t.strip('-=')

'hello'

*注意:去除字符的操作不會對位於字符串中間的任何文本起作用

>>>'s = hello  world  \n'

>>>s = s,strip()

>>>s

'hello  world'

如果要對里面的空格執行某些操作,應該使用其他技巧.比如replace()方法或者正則表達式轉換.

>>>s.replace('  ','')

'helloworld'

>>>import re

>>>re.sub('\s+',' ',s)

'hello world'

通常會遇到的情況是將去除字符的操作同某些迭代操作結合起來,比如從文件中讀取文本行.如果是這樣的話,那就到了生成器表達式大顯身手的時候了:

with open(filename) as f:

  lines = (line.strip() for line in f)

  for line in lines:

這里表達式lines = (line.strip() for line in f)的作用是完成數據的轉換.即把原始數據中每一行開頭和結尾處的空格符去掉.

3.分解文件名的擴展名 

a,b = os.path.splitext(fname)

a =

b =

 

擴展名是通過os.path.splitext函數提取出來的,

 

  1. root, extension = os.path.splitext(fname) 

 

這樣,fname中的擴展名部分即.py被賦給變量extension,而其余部分則賦給了變量root。如果想得到不帶點號的擴展名的話,只需使用os.path.splitext(fname)[1][1:]即可。
假設一個文件名為f,其擴展名隨意,若想將其擴展名改為ext,可以使用下面的代碼:

 

  1. newfile = os.path.splitext(f)[0] + ext 

 

下面是一個具體的示例:

 

    1. >>f = ’/some/path/case2.data_source’  
    2. >>moviefile = os.path.basename(os.path.splitext(f)[0] + ’.mpg’)  
    3. >>> moviefile  
    4. ’case2.mpg’ 

 

4.splitlines用法

 splitlines()方法返回一個字符串的所有行, 默認splitelines參數keepends為False,意思是不保留每行結尾的\n, 而keepends為True時,分割的每 一行里尾部會有\n

      按行分割字符串,返回值為列表

去掉列表的方法:s1 =s.splitlines()[0]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM