newby question: Splitting a string - separator

James Stroud jstroud at mbi.ucla.edu
Fri Dec 9 21:02:02 EST 2005


Thomas Liesner wrote:
> Hi all,
> 
> i am having a textfile which contains a single string with names.
> I want to split this string into its records an put them into a list.
> In "normal" cases i would do something like:
> 
> 
>>#!/usr/bin/python
>>inp = open("file")
>>data = inp.read()
>>names = data.split()
>>inp.close()
> 
> 
> The problem is, that the names contain spaces an the records are also
> just seprarated by spaces. The only thing i can rely on, ist that the
> recordseparator is always more than a single whitespace.
> 
> I thought of something like defining the separator for split() by using
>  a regex for "more than one whitespace". RegEx for whitespace is \s, but
> what would i use for "more than one"? \s+?
> 
> TIA,
> Tom

The one I like best goes like this:

py> data = "Guido van Rossum  Tim Peters     Thomas Liesner"
py> names = [n for n in data.split() if n]
py> names
['Guido', 'van', 'Rossum', 'Tim', 'Peters', 'Thomas', 'Liesner']

I think it is theoretically faster (and more pythonic) than using regexes.

James



More information about the Python-list mailing list