regular expression for space seperated quoted string

Padraig Brady Padraig at Linux.ie
Wed Sep 11 15:20:21 CEST 2002


Padraig Brady wrote:
> Eric Brunel wrote:
> 
>> Padraig Brady wrote:
>>
>>
>>> Hi, I'm trying to split a string that is seperated
>>> by spaces and also contains double quoted words which
>>> can contain spaces:
>>
> 
> [snip]
> 
>> What about:
>>
>>>>> p = r'[^ \t\n\v\f"]+|"[^"]*"'
>>>>> re.findall(p, '1 2 3')
>>>>
> 
> FYI, I'm using the following:
> 
> import fileinput, re
> for line in fileinput.input():
>     #split fields
>     fields = re.findall('[^ "]+|"[^"]+"', line[:-1])
>     #remove quotes
>     fields = map(lambda field: field.replace('"', ''), listLine)
> 
> thanks again,
> Pádraig.
> 

Just in case it's useful I might as well make it correct and more efficient:

import fileinput, re
reFieldSplitter = re.compile('[^ "]+|"[^"]+"')
for line in fileinput.input():
     #split fields
     fields = reFieldSplitter.findall(line[:-1])
     #remove quotes
     fields = map(lambda field: field.replace('"', ''), fields)

Pádraig.




More information about the Python-list mailing list