1. 程式人生 > >Python字符串分割方法總結

Python字符串分割方法總結

google string split 長度 .html 例如 more class rev

Python中字符串分割的常用方法是直接調用字符串的str.split方法,但是其只能指定一種分隔符,如果想指定多個分隔符拆分字符串需要用到re.split方法(正則表達式的split方法)。

str.split

字符串的split方法函數原型如下,其中sep為指定的分隔符,maxsplit為最大分割次數:

1 str.split(sep=None, maxsplit=-1)

默認情況下,不指定分隔符時則以空白字符(空格,回車,制表符等)作為分隔符拆分字符串:

1 2 3 4 >>> s = ‘A B\tC\nD‘ >>> s.split()
[‘A‘, ‘B‘, ‘C‘, ‘D‘] >>>

在結果列表中,不會包含空字符串:

1 2 3 4 >>> s = ‘ A B\tC\nD\n\n‘ >>> s.split() [‘A‘, ‘B‘, ‘C‘, ‘D‘] >>>

指定分隔符:

1 2 3 4 5 6 7 >>> s = ‘www.google.com‘ >>> s.split(‘.‘) [‘www‘, ‘google‘, ‘com‘]
>>> s = ‘AA||BB||CC||DD‘ >>> s.split(‘||‘) [‘AA‘, ‘BB‘, ‘CC‘, ‘DD‘] >>>

指定最大分割次數:

1 2 3 4 5 6 7 >>> s = ‘www.google.com‘ >>> s.split(‘.‘, 1) [‘www‘, ‘google.com‘] >>> s = ‘AA||BB||CC||DD‘ >>> s.split(‘||‘, 2) [‘AA‘, ‘BB‘, ‘CC||DD‘]
>>>

由此可見,當指定最大分割次數maxsplit時,結果列表長度為maxsplit+1
但是,字符串的split方法只能指定一個分隔符,如下:

1 s = ‘AAAA,BBBB:CCCC;DDDD‘

如果想指定逗號、冒號、分號都做為分隔符,字符串的split方法是做不到的,此時要用正則表達式中的split方法。

re.split

正則表達式的split方法原型如下,其中pattern為指定的分隔正則表達式,string為要分割的字符串,maxsplit為最大分割次數,flags為正則表達式用到的通用標誌:

1 re.split(pattern, string, maxsplit=0, flags=0)

參考示例:

1 2 3 4 5 >>> import re >>> s = ‘AAAA,BBBB:CCCC;DDDD‘ >>> re.split(r‘[,:;]‘, s) [‘AAAA‘, ‘BBBB‘, ‘CCCC‘, ‘DDDD‘] >>>

如果在正則表達式裏使用了捕獲組也就是括號,則結果列表中也會包含捕獲的內容:

1 2 3 4 5 >>> import re >>> s = ‘AAAA,BBBB:CCCC;DDDD‘ >>> re.split(r‘([,:;])‘, s) [‘AAAA‘, ‘,‘, ‘BBBB‘, ‘:‘, ‘CCCC‘, ‘;‘, ‘DDDD‘] >>>

如果不想在結果中看到分隔符,但仍然想用括號對正則表達式模式進行分組,可以使用非捕獲組,以(?:...)的形式指定,示例如下:

1 2 3 4 5 >>> import re >>> s = ‘AAAA,BBBB:CCCC;DDDD‘ >>> re.split(r‘(?:[,:;])‘, s) [‘AAAA‘, ‘BBBB‘, ‘CCCC‘, ‘DDDD‘] >>>

指定最大分割次數:

1 2 3 4 5 6 7 >>> import re >>> s = ‘AAAA,BBBB:CCCC;DDDD‘ >>> re.split(r‘[,:;]‘, s, 1) [‘AAAA‘, ‘BBBB:CCCC;DDDD‘] >>> re.split(r‘[,:;]‘, s, 2) [‘AAAA‘, ‘BBBB‘, ‘CCCC;DDDD‘] >>>

由此可見,當指定最大分割次數maxsplit時,結果列表長度為maxsplit+1
指定正則表達式中的通用標誌flags:

1 2 3 4 >>> import re >>> re.split(‘[a-f]+‘, ‘0a3B9‘, flags=re.IGNORECASE) [‘0‘, ‘3‘, ‘9‘] >>>

原文鏈接:http://www.revotu.com/python-split-string-methods.html

Python字符串分割方法總結