عنوان عميل فيه فاصلة أزاح القيم في صف كامل، فكيف أكتشف ذلك وأصلحه؟

الفاصلة غير المحاطة بعلامتي اقتباس تقسم القيمة إلى قيمتين، فتنتقل كل قيمة بعدها إلى العمود التالي. المحوّل ينبهك برقم الصف ويحفظ القيمة الفائضة تحت المفتاح __parsed_extra. الإصلاح أن تضع تلك الخلية بين علامتي اقتباس مزدوجتين في الملف ثم تحوّل من جديد.

نُشر في · دقائق قراءة: 2

كيف تبدو المشكلة في ملف حقيقي؟

لنأخذ ملف طلبات صغيرًا فيه ثلاثة أعمدة: الاسم والمدينة والمجموع. الصف الأول سليم، أما الصف الثاني فالمدينة فيه مكتوبة «Dubai, Marina» دون علامات اقتباس:

name,city,total Sara,Riyadh,250 Omar,Dubai, Marina,80

بالنسبة لقواعد CSV، الصف الثاني فيه أربع قيم لا ثلاث: Omar ثم Dubai ثم « Marina» ثم 80. والعناوين ثلاثة فقط، فالقيمة الرابعة لا مكان لها.

ماذا أخرجت الأداة؟

حوّلنا الملف إلى JSON فظهر التنبيه: «الصف 3: فيه 4 حقول بينما المتوقع 3. حُفظت الحقول الزائدة تحت __parsed_extra». وفي الناتج صار كائن عمر هكذا:

  • city تساوي «Dubai» فقط.
  • total تساوي « Marina» بمسافة في أولها، أي أن اسم الحي دخل مكان المبلغ.
  • المبلغ الحقيقي 80 انتقل إلى __parsed_extra.

لاحظ أن رقم الصف 3 وليس 2، لأن صف العناوين يُحسب صفًا. والأداة لم تحاول تخمين أين كان يجب أن تكون الفاصلة، بل أبقت كل قيمة وأشارت إلى الصف، حتى تقرر أنت.

الإصلاح في ثلاث خطوات

  1. افتح محوّل CSV و JSON واختر «CSV إلى JSON» والصق الملف، ثم اقرأ قائمة الملاحظات تحت الناتج واكتب أرقام الصفوف المذكورة.
  2. في الملف الأصلي ضع القيمة التي فيها فاصلة بين علامتي اقتباس مزدوجتين، فيصبح السطر: Omar,"Dubai, Marina",80.
  3. الصق الملف المصحح من جديد وتأكد أن الملاحظات اختفت.

بعد التصحيح أعطت الأداة لعمر city تساوي «Dubai, Marina» وtotal تساوي «80»، ولم تظهر أي ملاحظة.

من أين تأتي الفواصل غير المقتبسة؟

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

وإن كان الملف كبيرًا وفيه عشرات الصفوف المزاحة، فالأسهل أن تعيد تصديره من المصدر مع اختيار فاصل لا يظهر في البيانات، مثل Tab أو الخط العمودي |، ثم تحوله مع ترك الفاصل على «اكتشاف تلقائي».

المسافات الزائدة بعد الإصلاح

في مثالنا ظهرت القيمة « Marina» بمسافة في أولها، لأن ما بعد الفاصلة كان مسافة. الأداة لا تحذف المسافات من القيم، فهي جزء من البيانات. إن أردت تنظيف المسافات الزائدة في نص قبل تحويله فجرّب تنظيف المسافات، مع الانتباه إلى أنه يعمل على النص كله لا على عمود بعينه.

أسئلة شائعة

هل تُحذف القيم الزائدة؟

لا، تُحفظ تحت المفتاح __parsed_extra في الكائن نفسه مع تنبيه برقم الصف.

ماذا لو كانت القيم أقل من العناوين؟

يظهر تنبيه آخر بأن الصف فيه حقول أقل، والحقول الناقصة لا تظهر في ذلك الكائن.

هل أستطيع أن أجعل الأداة تصلح الصف بنفسها؟

لا، فهي لا تعرف أي فاصلة كانت مقصودة. تشير إلى الصف وتترك القرار لك.