Yet another "split string by spaces preserving single quotes" problem

Steven D'Aprano steve+comp.lang.python at pearwood.info
Tue May 15 09:15:19 EDT 2012


On Sun, 13 May 2012 14:14:58 -0700, Massi wrote:

> Hi everyone,
> I know this question has been asked thousands of times, but in my case I
> have an additional requirement to be satisfied. I need to handle
> substrings in the form 'string with spaces':'another string with spaces'
> as a single token; I mean, if I have this string:
> 
> s ="This is a 'simple test':'string which' shows 'exactly my' problem"
> 
> I need to split it as follow (the single quotes must be mantained in the
> splitted list):
> 
> ["This", "is",  "a",  "'simple test':'string which'", "shows", "'exactly
> my'", "problem"]
> 
> Up to know I have written some ugly code which uses regular expression:

And now you have two problems *wink*


> Any hints? Thanks in advance!

>>> s = "This is a 'simple test':'string which' shows 'exactly my' 
problem"
>>> import shlex
>>> result = shlex.split(s, posix=True)
>>> result
['This', 'is', 'a', 'simple test:string which', 'shows', 'exactly my', 
'problem']


Then do some post-processing on the result:

>>> ["'"+s+"'" if " " in s else s for s in result]
['This', 'is', 'a', "'simple test:string which'", 'shows', "'exactly 
my'", 'problem']


-- 
Steven



More information about the Python-list mailing list