Cho tệp CSV có ký tự dòng mới/trả về trong các trường nhất định, làm cách nào để phân tích dữ liệu mà không chia tách trường thành nhiều hàng.Cách phân tích cú pháp dữ liệu CSV có chứa dòng mới trong trường bằng cách sử dụng JavaScript
Ví dụ dữ liệu CSV:
ID;Name;Country;ISO-2;Address;Latitude;Longitude
022wje3;Europa;Italy;IT;"Viale Kennedy 3
34073 Grado";"45,67960";"13,40070"
024oua5;Hiberia;Italy;IT;"Via XXIV Maggio 8
00187 Rome";"41,89720";"12,48680"
028gupn;Regal Riverside;Hong Kong;HK;"34-36 Tai Chung Kiu Road
Shatin
Hong Kong";"22,38260";"114,19600"
02j7qry;Okaliptus Holiday Villas Apart;Turkey;TR;"Sevket Sabanci Caddesi No. 70
Bahçelievler Mevkii
Turgutreis";"37,02130";"27,25120"
02pc99z;California Apartementos;Spain;ES;"Prat d'en Carbó
43840 Salou";"41,07620";"1,14667"
02tu1jz;Elvis Presley's Heartbreak;United States;US;"3677 Elvis Presley Blvd.
Memphis
Tennessee 38116";"35,04850";"-90,02710"
Lưu ý: các lĩnh vực đang thực sự phân cách bằng dấu chấm phẩy
;
vì Địa chỉ có thể chứa dấu phẩy
Mỗi hàng có 7 lĩnh vực nhưng chúng tôi không muốn để phân tích nhầm dữ liệu trong một trường chứa các ký tự dòng mới dưới dạng nhiều hàng ...
Chúng tôi tìm thấy một vài câu trả lời Perl-tập trung vào StackOverflow:
- How to parse CSVs with newline and commas inside a field in Perl?
- Text::CSV parsing when data contains newline
nhưng tôi là một chút gỉ trên Perl và đã không phát hiện ra một câu trả lời JS-tập trung.
Dòng mới được bao gồm trong dấu ngoặc kép không phải là phần cuối của bản ghi. Bạn có nhận được điều đó từ bất kỳ liên kết Perl nào không? Và, nếu bạn không hiểu Ben Nadel đã làm như thế nào, bạn sẽ không biết cách làm một regex cho những trường hợp không chuẩn. Tốt hơn là tìm kiếm SO cho các regex phân tích cú pháp csv. Tôi đã đăng một vài bản thân mình. – sln
Chính xác. các dòng mới nằm bên trong dấu ngoặc kép vẫn là cùng một hàng/trường. Tôi nghĩ rằng tôi đã hiểu 'CSVToArray' và nó đã giải quyết vấn đề trước mắt của chúng tôi. Tôi sẽ đọc qua một vài câu trả lời của bạn để đánh dấu. Cảm ơn! – nelsonic