Pythonie, chcę podzielić następujący ciąg:Python: podzielić ciąg, szacunku i zachowania cytaty
a=foo, b=bar, c="foo, bar", d=false, e="false"
ten powinien wynikać w poniższej listy:
['a=foo', 'b=bar', 'c="foo, bar"', 'd=false', 'e="false'"']
Podczas korzystania shlex w posix-mode i dzielenie na "," argument dla c
zostaje potraktowany poprawnie. Jednak usuwa cytaty. Potrzebuję ich, ponieważ false
to nie to samo co "false"
.
Mój kod do tej pory:
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']
Czy w cudzysłowie mogą być cytowane cytaty? –
Tak, mogą (uciekają z odwrotnym ukośnikiem). – Remo
Wierzę, że jest to duplikat http://stackoverflow.com/a/79985/1540600, który zapewnia lepszą odpowiedź. (Użyj 'shlex.split()'.) – sferencik