Bạn có thể sử dụng shlex
module để phân tích chuỗi của bạn.
Theo mặc định, shlex.split
sẽ chia chuỗi tại ký tự khoảng trắng không kèm theo trong dấu ngoặc kép:
>>> shlex.split(teststring)
['48,', 'one, two,', '2011/11/03']
này không loại bỏ các dấu phẩy trailing từ chuỗi của bạn, nhưng nó gần với những gì bạn cần. Tuy nhiên, nếu bạn tùy chỉnh các phân tích cú pháp để xem xét dấu phẩy là một nhân vật khoảng trắng, sau đó bạn sẽ nhận được đầu ra mà bạn cần:
>>> parser = shlex.shlex(teststring)
>>> parser.whitespace
' \t\r\n'
>>> parser.whitespace += ','
>>> list(parser)
['48', '"one, two"', '"2011/11/03"']
Lưu ý: đối tượng phân tích cú pháp được sử dụng như một iterator để có được các thẻ từng người một. Do đó, list(parser)
lặp trên các đối tượng phân tích cú pháp và trả về chuỗi tách nơi bạn cần.
liên kết đó là không đủ để giải quyết vấn đề. Ngay bên ngoài hộp, trình đọc csv sẽ không phân tích chính xác chuỗi kiểm tra của OP. –