Tôi đã tìm thấy vấn đề phân tích cú pháp CSV với FasterCSV (1.5.0), có vẻ như là lỗi chính hãng, nhưng tôi hy vọng có một giải pháp thay thế.Khắc phục sự cố cơ bản với phân tích cú pháp CSV bằng cách sử dụng đá quý FasterCSV
Về cơ bản, thêm dấu cách sau dấu phân cách (trong trường hợp của tôi là dấu phẩy) khi các trường được đính kèm trong dấu ngoặc kép sẽ tạo ra một MalformedCSVError
.
Dưới đây là một ví dụ đơn giản:
# No quotes on fields -- works fine
FasterCSV.parse_line("one,two,three")
=> ["one", "two", "three"]
# Quotes around fields with no spaces after separators -- works fine
FasterCSV.parse_line("\"one\",\"two\",\"three\"")
=> ["one", "two", "three"]
# Quotes around fields but with a space after the first separator -- fails!
FasterCSV.parse_line("\"one\", \"two\",\"three\"")
=> FasterCSV::MalformedCSVError: Illegal quoting on line 1.
Am Tôi sẽ điên, hoặc đây là một lỗi trong FasterCSV?
Không phải là không gian nói rằng trường này thực sự không được bao quanh bởi dấu ngoặc kép (vì char đầu tiên không phải là báo giá) và dấu ngoặc kép nên được thực hiện như một phần của nội dung trường? –
Có vẻ như tôi đã sai. "Nếu các trường không kèm theo dấu ngoặc kép, thì dấu ngoặc kép có thể không xuất hiện bên trong các trường". - http://tools.ietf.org/html/rfc4180#section-2 –
Bạn nói đúng, tôi đã không nhận ra có 'spec' cho CSV nhưng có vẻ như có. FasterCSV thực sự rất nghiêm ngặt. – Olly