بعد فتح ملف CSV أو لصقه يصبح كل صف عنصرًا واحدًا في قائمة YAML، مفاتيحه من صف العناوين. افتراضيًا تبقى كل قيمة نصًا، والقيم التي كان محلّل YAML سيفسرها تفسيرًا آخر، مثل NO وyes و0150 و2024-03-01 وnull، توضع بين علامتي اقتباس لتُقرأ لاحقًا كما كُتبت تمامًا. يُحوَّل الملف في متصفحك ولا يُرفع أبدًا.
طريقة تحويل CSV إلى YAML
- اختر فتح ملف، أو أفلت ملف
.csv أو .tsv أو .txt على الأداة، أو اختر لصق. وإذا بدت المفاتيح خاطئة فراجع المحدِّد والترميز في إعدادات الاستيراد. - اختر أنواع القيم وطريقة كتابة الخلايا الفارغة. وتعرض علامة التبويب YAML النص نفسه الذي سيحتويه الملف المنزَّل.
- اختر المسافة البادئة، ثم نسخ أو تنزيل YAML.
الناتج تسلسل في المستوى الأعلى (عناصر بصيغة - key: value)، وهي البنية المستخدمة في بيانات الاختبار والبيانات الأولية وملفات بيانات المواقع الثابتة. وإذا احتجت إلى JSON بدلًا من ذلك، ففي CSV إلى JSON خيارات الأنواع نفسها.
ما يفعله كل خيار
| إبقاء كل القيم نصًا | الخيار الافتراضي. كل قيمة سلسلة نصية في YAML؛ ولا تُضاف علامات الاقتباس إلا حيث ستُقرأ القيمة البسيطة غير المقتبسة شيئًا آخر. |
|---|---|
| اكتشاف الأرقام وقيم true/false | لا يصبح العمود أرقام YAML إلا إذا كانت كل قيمه غير الفارغة أرقامًا بسيطة بلا أصفار في البداية وبـ15 رقمًا معنويًا على الأكثر؛ وتصبح أعمدة true/false (بأي حالة أحرف) قيمًا منطقية. وتبقى yes/no والتواريخ سلاسل نصية مقتبسة. وتُكتب الأرقام بالصيغة القياسية، فتصبح 1.50 1.5. |
| الخلايا الفارغة | يكتب null (الافتراضي) key: null؛ ويكتب نص فارغ "" key: ""؛ ويحذف حذف المفتاح ذلك المفتاح من الصف. |
| المسافة البادئة | مسافتان (الافتراضي) أو 4 مسافات للمفاتيح تحت كل عنصر في القائمة. |
كيف تُقتبس القيم الملتبسة
يُكتب الناتج ليُقرأ بالطريقة نفسها في محلّلات YAML 1.2 وفي محلّلات YAML 1.1 الأقدم مثل PyYAML، التي تعامل كلمات أكثر على أنها قيم منطقية وأرقام.
- رموز الدول والإجابات: تُقتبس
NO وyes وoff وy وon، فلا يُقرأ رمز النرويج على أنه false. وينطبق ذلك على المفاتيح أيضًا ("on": x). - الأصفار في البداية: تُقتبس
0150 و08001؛ فدون اقتباس يقرؤها YAML 1.1 أرقامًا ثمانية أو عشرية ويحذف الصفر. - التواريخ والأرقام في وضع النص: تُقتبس
2019-04-01 و12 فلا تُقرأ طابعًا زمنيًا أو عددًا صحيحًا. - النصوص الشبيهة بالقيمة الخالية: الخلية التي تحتوي على
null أو ~ تُقتبس، فتبقى النص الذي كتبته ولا تُخلط بخلية فارغة. - فواصل الأسطر داخل القيمة تصبح كتلة حرفية
|-، ويُقتبس النص الذي فيه : أو #. ولا تُطوى الأسطر الطويلة أبدًا. - تُستخدم العناوين مفاتيح كما كُتبت تمامًا، بما فيها المسافات والكتابة العربية وغير اللاتينية. ويصبح العنوان الفارغ
Column 3 والمكرر name (2).
حل المشكلات
- بقي عمود أرقام مقتبسًا مع «اكتشاف الأرقام وقيم true/false». قيمة واحدة على الأقل ليست رقمًا بسيطًا، مثل
1,5 أو 12 kg أو 007. ابحث عنها في عارض CSV. - عمود yes/no لم يصبح قيمًا منطقية. لا تُحوَّل إلا
true وfalse، لأن yes وno وon لا تعني قيمًا منطقية إلا في YAML 1.1. استبدلها في ملف CSV أولًا بأداة محرر CSV إذا احتجت إلى قيم منطقية. - في المفاتيح أحرف غريبة مثل é. الملف ليس بترميز UTF-8. اختر ترميزه من «إعدادات الاستيراد».
- كل البيانات تحت مفتاح واحد. خُمِّن المحدِّد خطأً؛ اضبطه من «إعدادات الاستيراد».
الحدود والخصوصية
الملفات حتى 25 ميغابايت أو 100 ألف صف أو مليوني خلية تُفتح مع معاينة مباشرة لأول 200 صف. أما الملفات الأكبر فتُحوَّل تدفقيًا: يُقرأ الملف مرتين على أجزاء (مرة لقياس الأعمدة وأنواعها، ومرة للكتابة)، وتذكر ملاحظة أن الملف المنزَّل يشمل الملف كله، ولا يتوفر نسخ. والحد الأقصى لملف الناتج الواحد 4 غيغابايت.
يجري التحويل في عامل خلفي داخل علامة التبويب هذه، فتبقى الصفحة مستجيبة ويوقفه زر إلغاء. ولا يُرسل ملف CSV أبدًا إلى أي خادم.
مثال
قائمة عملاء فيها رموز دول، ورموز بريدية تبدأ بأصفار، وعلامات yes/no، وتواريخ، وخلايا فارغة، حُوّلت بالإعدادات الافتراضية (كل القيم نص، والخلايا الفارغة null). ومع اكتشاف الأرقام وقيم true/false لا يتغير إلا orders، فيصبح 12 و3 و7.
country,code,postcode,vat_registered,since,orders Norway,NO,0150,yes,2019-04-01,12 Spain,ES,08001,no,2021-11-15,3 United States,US,02134,,,7
- country: Norway code: "NO" postcode: "0150" vat_registered: "yes" since: "2019-04-01" orders: "12" - country: Spain code: ES postcode: "08001" vat_registered: "no" since: "2021-11-15" orders: "3" - country: United States code: US postcode: "02134" vat_registered: null since: null orders: "7"
أسئلة وأجوبة
لماذا توضع `NO` بين علامتي اقتباس؟
في YAML 1.1 تعني NO وno وoff وn غير المقتبسة القيمة false. والاقتباس يُبقي رمز دولة النرويج، أو أي إجابة مكتوبة no، نصًا في كل محلّل.
هل يمكن الحصول على خريطة واحدة مفاتيحها معرّفات بدل القائمة؟
لا. يُكتب كل صف CSV عنصرًا واحدًا في القائمة بترتيب الملف. والناتج ذو المفاتيح غير متاح هنا.
هل الناتج YAML 1.2 صالح؟
نعم. الاقتباس الإضافي اللازم لـYAML 1.1 يبقى صالحًا في YAML 1.2؛ وكل ما يفعله أنه يجعل القيم التي كانت أصلًا سلاسل نصية صريحة.