[EMAIL PROTECTED] 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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to