s.split() on multiple separators

Bryan Olson fakeaddress at nowhere.org
Sun Sep 30 13:49:23 EDT 2007


mrkafk at gmail.com wrote:
> Hello everyone,
> 
> OK, so I want to split a string c into words using several different
> separators from a list (dels).
> 
> I can do this the following C-like way:
> 
>  c=' abcde abc cba fdsa bcd '.split()
>  dels='ce '
>  for j in dels:
> 	cp=[]
> 	for i in xrange(0,len(c)-1):

The "-1" looks like a bug; remember in Python 'stop' bounds
are exclusive. The indexes of c are simply xrange(len(c)).

Python 2.3 and up offers: for (i, word) in enumerate(c):

> 		cp.extend(c[i].split(j))
> 	c=cp
> 
> 
> c
> ['ab', 'd', '', 'ab', '', '']

The bug lost some words, such as 'fdsa'.


> But. Surely there is a more Pythonic way to do this?

When string.split() doesn't quite cut it, try re.split(), or
maybe re.findall(). Is one of these what you want?

     import re

     c = ' abcde abc cba fdsa bcd '

     print re.split('[ce ]', c)

     print re.split('[ce ]+', c)

     print re.findall('[^ce ]+', c)


-- 
--Bryan



More information about the Python-list mailing list