BLOG
Enjoy when you can, and endure when you must.
APR 22, 2014/Python
Python字符串的拆分

字符串的拆分是一个很常见的需求。Python中的字符串也为我们提供了一个split()方法用于方便地按指定格式对字符串进行拆分并返回一个列表。假如有如下字符串:

23-16-70-KF-BF-8D

这是一个网卡MAC地址,现在我们需要以“-”为分界点将字符串拆分成6组,split()可以方便地做到:

>>> mac = '23-16-70-KF-BF-8D'
>>> mac.split('-')
['23', '16', '70', 'KF', 'BF', '8D']

split()方法实际可接收两个参数,并且都是可选的。第一个参数是sep,用于指定分隔符,默认为一个空格;而第二个参数是maxsplit,是最多分割的个数,默认为-1,即不限制。让我们来看看将此参数设为1的效果:

>>> mac.split('-', 1)
['23', '16-70-KF-BF-8D']

不过也许我们还有另一种需求,就是这个分隔符不是固定的,那上面的方法可不大奏效。假如现在的字符串变成这样了:

12d34e56f78g90

这里每两个数字间都有一个不固定的字母,而现在的需求就是将每组数字提取出来,该如何操作呢?对于这样的情况,我们可以考虑使用正则表达式,它很擅长这个。

re里的确也为我们提供了一个split方法并且专门用于处理这种需求,先来尝试一下:

>>> string = '12d34e56f78g90'
>>> import re
>>> re.split('\D{1}', string)
['12', '34', '56', '78', '90']

“\D”匹配非数字,满足我们的要求,因此可以用它作为分隔符,然后即可得到想要的结果。

其实字符串的拆分在Python里还可以采用很多方法来处理,多研究研究基础和一些对应的库是个不错的选择。

COMMENTS
LEAVE COMMNT