shlex parsing

Karim karim.liateni at free.fr
Fri Jul 29 11:37:34 CEST 2011


On 07/29/2011 09:24 AM, Web Dreamer wrote:
> Nobody a écrit ce jeudi 28 juillet 2011 18:37 dans
> <pan.2011.07.28.16.37.35.287000 at nowhere.com>  :
>
>> On Thu, 28 Jul 2011 17:48:34 +0200, Web Dreamer wrote:
>>
>>>> I would like to parse this TCL command line with shlex:
>>>>
>>>> '-option1 [get_rule A1 B2] -option2 $VAR -option3 TAG'
>>>>>> s = s.replace('[','"[')
>>>>>> s = s.replace(']',']"')
>> Note that this approach won't work if you have nested brackets or braces.
>> That would require a real parser.
> True,
> I tried with the shlex class, but adding '[]' to a shlexobject.quotes
> doesn't work.
> Indeed, shlex expects an opening and closing quote to be the same, and [ is
> different from ] so shlex therefore expects an opening [ to be closed with [
> and not ]
>
> My solution indeed only works as long as there are not any nested brackets.
>
Yeah I saw that shlex object behavior is slighty different from 
shlex.split()
fonction. the char minus by default is taken as a individual word and in 
split
it is not. get_token() method return '-' alone and you have to set 
object attributes
wordchars += '-' to have the same behavior as shlex.split().

Cheers
Karim




More information about the Python-list mailing list