con Python, voglio dividere la seguente stringa:Python: dividere una stringa, rispettare e preservare le citazioni
a=foo, b=bar, c="foo, bar", d=false, e="false"
Ciò dovrebbe tradursi nel seguente elenco:
['a=foo', 'b=bar', 'c="foo, bar"', 'd=false', 'e="false'"']
Quando si utilizza shlex in posix-mode e splitting con ",", l'argomento per c
viene trattato correttamente. Tuttavia, rimuove le virgolette. Ho bisogno di loro perché false
non è lo stesso di "false"
, per esempio.
Il mio codice finora:
import shlex
mystring = 'a=foo, b=bar, c="foo, bar", d=false, e="false"'
splitter = shlex.shlex(mystring, posix=True)
splitter.whitespace += ','
splitter.whitespace_split = True
print list(splitter) # ['a=foo', 'b=bar', 'c=foo, bar', 'd=false', 'e=false']
Possono esserci virgolette (sfuggite) tra virgolette? –
Sì, possono (fuggire con una barra rovesciata). – Remo
Credo che questo sia un duplicato di http://stackoverflow.com/a/79985/1540600, che fornisce una risposta superiore. (Usa 'shlex.split()'.) – sferencik