العربية

البيانات وجداول البيانات · CSV منظف

كيف يتعامل المحلل اللغوي CSV مع علامات الاقتباس والفواصل المضمنة والأسطر الجديدة في الحقول

· كيف يعمل

ملف CSV تحليل تنسيقات البيانات

مسار حالة محلل يحتفظ بالفواصل المقتبسة وعلامات الاقتباس المزدوجة وفواصل الأسطر المضمنة داخل الحقول
الرسم التوضيحي المتجه الأصلي ToolAcre

يعمل التقسيم على الفواصل حتى يحتوي الحقل على فاصلة أو اقتباس أو فاصل أسطر. يشرح هذا المنشور آلة الحالة الصغيرة التي يستخدمها المحلل اللغوي CSV الحقيقي، وسبب وجود قواعد الاقتباس، وما تفعله أداة الإصلاح عند تعطل الاقتباس.

قام حقل عنوان بفاصلة بنقل كل عمود إلى اليمين - لماذا لا يتم تحليل التقسيم الساذج

يفشل تقسيم سطر عند كل فاصلة بمجرد أن يحتوي العنوان البريدي أو الملاحظة أو وصف المنتج على هذا الحرف. يقوم الفاصل بإنهاء الحقل فقط عندما يكون المحلل اللغوي خارج الحقل المقتبس. علامات الاقتباس الداخلية، تنتمي نفس البايت إلى القيمة ويجب أن تصل إلى المعاينة دون تغيير.

ToolAcre يثبت ذلك من خلال الاختبارات بدلاً من افتراض أن CSV نص بسيط. لا يزال يتم اكتشاف ملف بفاصلة منقوطة يحتوي على فواصل داخل الملاحظات المقتبسة كمفصول بفاصلة منقوطة لأنه يتم تحليل كل مرشح إلى صفوف قبل تسجيل شكله المستطيل. لا تحدد علامات الترقيم الأولية اللهجة أبدًا.

قواعد الاقتباس - يتم تغليف الحقول التي تحتوي على الفاصل أو علامات الاقتباس أو الأسطر الجديدة بعلامات اقتباس مزدوجة، ويتم مضاعفة علامات الاقتباس الداخلية

يتم اقتباس حقل يحتوي على المحدد المختار أو علامة اقتباس مزدوجة أو تغذية سطر أو حرف إرجاع أثناء إجراء التسلسل. يتم تمثيل الاقتباس المزدوج الحرفي داخل الحقل المقتبس بواسطة علامتي اقتباس متجاورتين. في التحليل، يساهم هذا الزوج في اقتباس واحد للخلية ولا يغلق الحقل.

تفتح علامات الاقتباس الحالة المقتبسة فقط عندما تظهر في بداية الحقل الفارغ. في القيمة غير المقتبسة مثل توجيه الإخراج 12"، يظل الاقتباس عبارة عن بيانات حرفية. ويتم اختبار خيار التنفيذ هذا ويمنع علامة القياس الموجودة في منتصف النص من ابتلاع الأعمدة اللاحقة.

المحلل اللغوي كآلة حالة - علامات الاقتباس الداخلية مقابل علامات الاقتباس الخارجية، وكيف يقرر حرف واحد في كل مرة أين ينتهي الحقل

تتتبع الحلقة الأساسية الحقل الحالي والصف الحالي وحالة `inQuotes`. خارج علامات الاقتباس، يدفع المحدد حقلاً ويدفع CR أو LF أو CRLF صفًا. داخل علامات الاقتباس، يتم إلحاق كل حرف باستثناء الاقتباس، والذي يشكل إما زوجًا مهربًا أو يخرج من حالة الاقتباس.

يشرح هذا التقدم المكون من حرف واحد سبب هشاشة التعبير العادي البسيط أو تقسيم الأسطر. يعتمد ما إذا كان السطر الجديد ينهي السجل على الإدخال السابق، وما إذا كان الاقتباس يغلق الحقل يعتمد على الاقتباس التالي. يحمل المحلل اللغوي تلك الحالة الدنيا بالضبط عبر السلسلة.

الأسطر الجديدة المضمنة - لماذا يمكن أن يمتد الصف على عدة أسطر ولماذا الأدوات المستندة إلى الأسطر مثل سجلات الخطأ في grep أو wc

قد يحتوي الحقل المقتبس على LF أو CRLF أو CR وحيد، وتظل تلك الأحرف داخل القيمة. وبالتالي يمكن أن يشغل سجل منطقي واحد عدة أسطر عرض في محرر النصوص. إن حساب الأسطر الفعلية باستخدام أمر موجه نحو السطر لا يعني بالضرورة حساب صفوف البيانات.

بعد الاقتباس الختامي، يستأنف المحدد أو نهاية السجل التالي المعنى الهيكلي. تؤكد اختبارات ToolAcre على كل من LF المضمن وCRLF المضمن، ثم تتحقق من إنتاج صف واحد فقط. لا يتم استنتاج هذا السلوك من التصنيف RFC؛ وتمارس مباشرة بواسطة آلة الدولة المشحونة.

اقتباسات مقطوعة - علامات اقتباس غير متوازنة تبتلع بقية الملف، وكيف تقوم أداة الإصلاح بإعادة اقتباس الحقول بشكل متسق

وعد المخطط بإصلاح عرض الأسعار، لكن الاقتباس غير المغلق غامض بطبيعته. ToolAcre يُبلغ `UNCLOSED_QUOTE` مقابل الصف الذي بدأت فيه الحالة المقتبسة ويقرأ كل شيء بعد ذلك في حقل واحد. ولا يخترع مركز إغلاق أو يعيد تسعير السجلات المقصودة.

يحافظ هذا الفشل المحافظ على النص المستهلك للفحص ويتجنب التظاهر بمعرفة ما إذا كان المقصود من الاقتباس اللاحق أو السطر الجديد أن يكون بيانات. قم بتصحيح المصدر أو إعادة إنشاء عملية التصدير، ثم إعادة التحميل. يمكن للتسلسل تسوية جدول تم تحليله بنجاح؛ ولا يمكنه استعادة حدود الصفوف التي جعلها المصدر المشوه غير معروفة.

تم الإبلاغ عن الاقتباس المكسور ولكن لم يتم إصلاحه؛ يستهلك الحقل غير المغلق النص المتبقي

استخدم `name,note` كرأس، ثم صفًا واحدًا يحتوي على Ada وملاحظة تحتوي على فاصلة بالإضافة إلى فاصل أسطر، وصفًا آخر تكون ملاحظته `She said "hi"`. في المصدر CSV، اقتبس الملاحظة الطويلة واكتب علامة الاقتباس الداخلية بالشكل `""hi""`. يقوم المحلل اللغوي بإرجاع صفين من البيانات ويحتفظ بكلا الحرفين الخاصين.

عند إجراء تسلسل مع الحد الأدنى من الاقتباس، فإن الأسماء العادية لا تحتاج إلى علامات اقتباس، بينما يتم اقتباس حقول الملاحظات لأنها تحتوي على أحرف هيكلية. يؤدي تحليل هذا الإخراج مرة أخرى إلى الحصول على نفس الرأس والخلايا حتى في حالة اختفاء علامات اقتباس المصدر الزائدة عن الحاجة. تحدد مساواة البيانات، وليس تصميم البايت مقابل البايت، هذه الرحلة ذهابًا وإيابًا.

ما لا يغطيه هذا - اللهجات التي تستخدم هروب الشرطة المائلة العكسية، والاستدلالات لتخمين النية عندما يكون الاقتباس غامضًا حقًا

لهجات الهروب من الشرطة المائلة العكسية موجودة خارج المحلل اللغوي. الشرطة المائلة العكسية قبل الاقتباس ليس لها معنى خاص لآلة الحالة هنا؛ ويظل نصًا، بينما يتم تفسير الاقتباس وفقًا لقواعد الاقتباس المزدوج. ترفض الأداة أيضًا تخمين النية بمجرد أن يظل عرض الأسعار الافتتاحي غير متطابق.

هذه الحدود مهمة عند استيراد تفريغ قاعدة بيانات تم تكوينه لاتفاقية هروب أخرى. حدد لهجة المنتج قبل التحميل، أو قم بالتصدير باستخدام اقتباس بنمط RFC. يمكن للمحلل الذي يتعرف بصمت على العديد من قواعد الهروب غير المتوافقة أن يحول الخطوط المائلة العكسية الحرفية إلى بناء جملة تحكم ويخفي عدم التطابق.

احترم علامات الاقتباس والصفوف التي تظل سليمة - كيف ينتج إصلاح اقتباس المنظف ToolAcre CSV ملفًا يقرأه المحللون القياسيون بشكل صحيح

احترام الحالة المقتبسة يحافظ على المحددات ونهايات التسجيل داخل الخلايا التي تنتمي إليها. يتعامل ToolAcre أيضًا مع ثلاثة نماذج نهاية الأسطر، ويزيل UTF-8 BOM البادئة، ويبلغ عن عدم تطابق عرض الصف. هذه السلوكيات هي أجزاء مستقلة من قراءة هيكلية واحدة وليست مجموعة من حيل البحث والاستبدال.

بعد التحليل الصحيح، يقوم التسلسل بمضاعفة علامات الاقتباس المضمنة ويقتبس أي حقل يتطلب الحماية، مع إخراج CRLF بشكل افتراضي. بعد عرض أسعار غير مغلق وغير صالح، قم بالإيقاف والإصلاح من دليل المصدر. يمكن للأداة توحيد الخلايا المعروفة؛ لا تدعي إعادة بناء جدول غير معروف.