Sử dụng python, tôi muốn chia chuỗi sau:Python: Chia một chuỗi, sự tôn trọng và giữ gìn dấu ngoặc kép
a=foo, b=bar, c="foo, bar", d=false, e="false"
này nên kết quả trong danh sách sau đây:
['a=foo', 'b=bar', 'c="foo, bar"', 'd=false', 'e="false'"']
Khi sử dụng shlex trong chế độ posix và tách với ",", đối số cho c
được xử lý chính xác. Tuy nhiên, nó loại bỏ các dấu ngoặc kép. Tôi cần chúng bởi vì false
không giống như "false"
, ví dụ.
Mã của tôi cho đến nay:
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']
Có thể có (thoát) dấu ngoặc kép bên trong dấu ngoặc kép không? –
Có, họ có thể (thoát bằng dấu gạch chéo ngược). – Remo
Tôi tin rằng đây là bản sao của http://stackoverflow.com/a/79985/1540600, cung cấp câu trả lời vượt trội. (Sử dụng 'shlex.split()'.) – sferencik