Tôi đang cố gắng sử dụng PARSE để chuyển dòng CSV thành khối Rebol. Đủ dễ để viết bằng mã mở, nhưng cũng như với các câu hỏi khác, tôi đang cố gắng tìm hiểu phương ngữ có thể làm gì nếu không có điều đó.Cách sử dụng phương ngữ PARSE để đọc trong một dòng từ CSV?
Vì vậy, nếu một dòng nói:
"Look, that's ""MR. Fork"" to you!",Hostile Fork,,http://hostilefork.com
Sau đó, tôi muốn các khối:
[{Look, that's "MR. Fork" to you!} {Hostile Fork} none {http://hostilefork.com}]
Các vấn đề cần chú ý:
- dấu ngoặc kép nhúng trong chuỗi CSV được chỉ báo bằng
""
- Dấu phẩy có thể nằm trong dấu ngoặc kép và h ence một phần của văn chương, không phải là một dấu phân cách cột
- dấu phẩy cột tách Liền kề chỉ ra một cánh đồng trống
- Strings không chứa dấu ngoặc kép hoặc dấu phẩy có thể xuất hiện mà không có dấu ngoặc kép
- Đối với thời điểm chúng ta có thể giữ cho mọi thứ như
http://rebol.com
là STRING! thay vì LOAD, hãy nhập chúng vào các loại như URL!
Để làm cho nó đồng nhất hơn, điều đầu tiên tôi làm là gắn dấu phẩy vào dòng nhập. Sau đó, tôi có một số column-rule
chụp một cột đơn được chấm dứt bằng dấu phẩy ... có thể có dấu ngoặc kép hay không.
Tôi biết có bao nhiêu cột cần có do dòng tiêu đề, vì vậy các mã sau đó nói:
unless parse line compose [(column-count) column-rule] [
print rejoin [{Expected } column-count { columns.}]
]
Nhưng tôi là một chút khó khăn trên bằng văn bản column-rule
. Tôi cần một cách trong phương ngữ để thể hiện "Khi bạn tìm thấy báo giá, hãy bỏ qua các cặp trích dẫn cho đến khi bạn tìm thấy báo giá tự đứng một mình". Cách tốt nhất để làm điều đó là gì?
Thời gian phản hồi tuyệt vời trên câu trả lời dường như (cho đến nay) để làm việc trên dữ liệu lập dị mà tôi đã cung cấp! – HostileFork