الانتقال إلى الأداة
ViewCSV
الملفات تبقى على جهازك

تحويل CSV إلى YAML

orders.csv· بيانات نموذجية15 صفًا · 8 أعمدة
أنواع القيم
تُوضع القيم النصية التي تشبه الأرقام أو ⁦true/false⁩ أو التواريخ بين علامتي اقتباس، لتُقرأ لاحقًا بالنص نفسه.
- order_id: "001041"
  customer: عمر القحطاني
  city: تونس
  product: Chair, ergonomic
  quantity: "6"
  unit_price: "144.56"
  order_date: "2026-01-24"
  status: refunded
- order_id: "001042"
  customer: سارة المصري
  city: الدوحة
  product: Monitor 27"
  quantity: "9"
  unit_price: "161.36"
  order_date: "2026-02-21"
  status: shipped
- order_id: "001043"
  customer: خالد الخطيب
  city: عمّان
  product: Desk lamp
  quantity: "5"
  unit_price: "170.88"
  order_date: "2026-03-27"
  status: shipped
- order_id: "001044"
  customer: فاطمة الحربي
  city: دبي
  product: Desk lamp
  quantity: "1"
  unit_price: "161.16"
  order_date: "2026-04-24"
  status: pending
- order_id: "001045"
  customer: نور الزهراني
  city: عمّان
  product: Notebook A5
  quantity: "1"
  unit_price: null
  order_date: "2026-05-02"
  status: refunded
- order_id: "001046"
  customer: هدى الدوسري
  city: الدوحة
  product: Monitor 27"
  quantity: "2"
  unit_price: "211.63"
  order_date: "2026-06-17"
  status: shipped
- order_id: "001047"
  customer: " علي القحطاني "
  city: عمّان
  product: Coffee beans 1kg
  quantity: "2"
  unit_price: "57.05"
  order_date: "2026-07-09"
  status: shipped
- order_id: "001048"
  customer: عمر المصري
  city: الدار البيضاء
  product: Desk lamp
  quantity: "9"
  unit_price: "216.89"
  order_date: "2026-08-13"
  status: shipped
- order_id: "001049"
  customer: أحمد الحربي
  city: الرياض
  product: USB-C cable
  quantity: "5"
  unit_price: "133.18"
  order_date: "2026-09-01"
  status: shipped
- order_id: "001050"
  customer: يوسف الدوسري
  city: عمّان
  product: USB-C cable
  quantity: "4"
  unit_price: "242.50"
  order_date: "2026-01-22"
  status: pending
- order_id: "001051"
  customer: أحمد الشمري
  city: القاهرة
  product: Desk lamp
  quantity: "2"
  unit_price: "217.96"
  order_date: "2026-02-06"
  status: refunded
- order_id: "001052"
  customer: عمر الحسن
  city: جدة
  product: Desk lamp
  quantity: "6"
  unit_price: "12.86"
  order_date: "2026-03-18"
  status: shipped
- order_id: "001053"
  customer: أحمد السيد
  city: دبي
  product: USB-C cable
  quantity: "9"
  unit_price: "158.31"
  order_date: "2026-04-13"
  status: pending
- order_id: "001054"
  customer: عمر الدوسري
  city: الدار البيضاء
  product: Notebook A5
  quantity: "7"
  unit_price: "30.61"
  order_date: "2026-05-07"
  status: shipped
- order_id: "001043"
  customer: خالد الخطيب
  city: عمّان
  product: Desk lamp
  quantity: "5"
  unit_price: "170.88"
  order_date: "2026-03-27"
  status: shipped

15 صفًا · 1 ملف

بعد فتح ملف CSV أو لصقه يصبح كل صف عنصرًا واحدًا في قائمة YAML، مفاتيحه من صف العناوين. افتراضيًا تبقى كل قيمة نصًا، والقيم التي كان محلّل YAML سيفسرها تفسيرًا آخر، مثل ⁦NO⁩ و⁦yes⁩ و⁦0150⁩ و⁦2024-03-01⁩ و⁦null⁩، توضع بين علامتي اقتباس لتُقرأ لاحقًا كما كُتبت تمامًا. يُحوَّل الملف في متصفحك ولا يُرفع أبدًا.

طريقة تحويل CSV إلى YAML

  1. اختر فتح ملف، أو أفلت ملف ⁦.csv⁩ أو ⁦.tsv⁩ أو ⁦.txt⁩ على الأداة، أو اختر لصق. وإذا بدت المفاتيح خاطئة فراجع المحدِّد والترميز في إعدادات الاستيراد.
  2. اختر أنواع القيم وطريقة كتابة الخلايا الفارغة. وتعرض علامة التبويب YAML النص نفسه الذي سيحتويه الملف المنزَّل.
  3. اختر المسافة البادئة، ثم نسخ أو تنزيل 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⁩.

CSV
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
YAML
- 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؛ وكل ما يفعله أنه يجعل القيم التي كانت أصلًا سلاسل نصية صريحة.

المعايير والمراجع