تحويل CSV إلى جدول نصي محاذى
الصق ملفًا مصدّرًا من ثلاثة صفوف بالأسماء والوظائف والمدن، لتحصل على جدول تصطف أعمدته بدقة وتفصل بينها خطوط عمودية، مع خط متقطع تحت العناوين. ويتعامل مع القيم المقتبسة والفواصل المنقوطة وعلامات الجدولة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تحلّل الحقول المحاطة بعلامات الاقتباس تحليلًا صحيحًا — بما فيها الفواصل والفواصل المنقوطة وفواصل الأسطر داخل علامات الاقتباس — وتحسب عرض كل عمود وتبطّن كل خلية كي تصطف الأعمدة، وترسم خطًا فاصلًا تحت الترويسة. وعندما يحتوي أحد الصفوف على عدد من الحقول يختلف عن الترويسة، يفشل الاستدعاء بخطأ واضح بدلًا من إنتاج جدول معوّج، ما لم تفعّل خيار lenient لملء الصفوف القصيرة بخلايا فارغة.
لماذا نعرض CSV في جدول بعرض ثابت
CSV هو التنسيق الذي تنتقل به البيانات، لكنه تنسيق سيئ جدًا للقراءة. فالعمود الذي يحتوي قيمًا طويلة يدفع الحقل التالي بعيدًا إلى اليمين في صف دون آخر، فيفقد البصر المحاذاة بعد سطرين. وتحل جداول البيانات هذه المشكلة بإخفاء النص كليًا، وهذا بالضبط ما لا تريده عندما تكون الوجهة سجل طرفية أو تعليقًا على pull request أو بريدًا إلكترونيًا بنص عادي أو توثيقًا بتنسيق Markdown.
أما محوّل csv إلى جدول نصي فيحافظ على البيانات كنص — قابل للنسخ وللمقارنة بـ diff وللبحث فيه بـ grep — مع استعادة الشيء الوحيد الذي كانت جداول البيانات توفره: أعمدة مصطفّة. الصق التصدير وستحصل على كتلة يشغل فيها كل حقل الموضع نفسه في جميع الصفوف، مع مسطرة من الشَّرطات تحت الترويسة. ولأن الناتج نص عادي، فإنه يصمد أمام اللصق في أي أداة أو دردشة أو مراجعة شيفرة دون إعادة تنسيق، ويُقرأ بالطريقة نفسها على شاشة هاتف كما على شاشة عريضة.
كيف يعمل التحليل والمحاذاة
يتبع المحلل اصطلاحات RFC 4180: يجوز للحقل المحاط بعلامتي اقتباس مزدوجتين أن يحتوي على الفاصل وفواصل الأسطر وعلامات اقتباس حرفية تُكتب كعلامتي اقتباس مزدوجتين متتاليتين، وتُتجاهل الأسطر الفارغة. وهذا مهم عمليًا لأن عمليات التصدير الحقيقية تضع الحقول بين علامتي اقتباس تحديدًا عندما تحتوي شيئًا مثيرًا للاهتمام: عنوانًا فيه فاصلة، أو ملاحظة فيها فاصلة منقوطة، أو رسالة فيها فاصل سطر. بعد التحليل، يتحقق العارض من أن كل صف يحتوي العدد نفسه من الحقول الذي في الصف الأول.
وإن لم يكن الأمر كذلك، يفشل الاستدعاء بخطأ يذكر الصف والعددين معًا: فالصف الذي تنقصه فاصلة ختامية ينتج جدولًا منزاحًا بشكل واضح، والجدول المنزاح أسوأ من غياب الجدول. وإن كنت تفضّل رؤية البيانات على أي حال، فعّل lenient وستُملأ الصفوف القصيرة بخلايا فارغة حتى عرض أوسع صف. بعد ذلك يُحسب عرض كل عمود على أنه أطول خلية فيه، وتُبطَّن كل خلية حتى ذلك العرض، وتُدمج الأعمدة بخط عمودي.
وعندما يكون الصف الأول ترويسة، تُرسم تحته مسطرة من الشَّرطات. كل شيء حتمي: المدخل نفسه ينتج دائمًا مخرجًا مطابقًا بايتًا ببايت.
الفواصل والترويسات والاستخدام اليومي
ليس كل CSV يستخدم الفاصلة. فعمليات التصدير الأوروبية تستخدم غالبًا الفاصلة المنقوطة، وكثير من تفريغات قواعد البيانات يستخدم الجدولة أو الخط العمودي. مرّر الحرف في حقل delimiter وسيعمل كل شيء آخر بالطريقة نفسها: الحقول المقتبسة واكتشاف الأخطاء والملء المتساهل.
وإن لم تكن بياناتك تحتوي صف ترويسة، فاضبط header على القيمة false وسيُعرض الصف الأول كبيانات دون خط فاصل. تعمل هذه القدرة على الحافة دون تخزين أي شيء: يُحلَّل النص ويُعرض ثم يُتخلَّص منه. من المستخدمين النموذجيين سكربتات الإصدار التي تطبع جدولًا تلخيصيًا في سجلات CI، وبرامج الروبوت التي ترد بجدول مقروء في الدردشة، ومولّدات التوثيق التي تضمّن بيانات نموذجية محاذاة.
تُقبل مدخلات حتى 1 ميغابايت و50,000 صف، وهو ما يغطي بسهولة أي تصدير قد يلصقه إنسان ومعظم ما تولّده الآلات.
حالات الاستخدام
جداول مقروءة في سجلات CI
اطبع ملخصات البناء أو الترحيل كجداول محاذاة في سجلات نصية عادية بدلًا من أسطر مفصولة بفواصل لا يقرأها أحد.
لصق البيانات في الدردشات والتذاكر
نسّق تصدير CSV مرة واحدة والصقه في Slack أو تذكرة أو بريد إلكتروني حيث يبقى محاذًى ومقروءًا.
تضمين بيانات نموذجية في التوثيق
اعرض مجموعات البيانات النموذجية ككتل بعرض ثابت في ملفات README والتوثيق دون صيانة التبطين يدويًا.
الأسئلة الشائعة
كم التكلفة؟
كما يمكن تشغيله مجانًا في متصفحك على هذه الصفحة.
هل يُخزَّن ملف CSV الخاص بي؟
لا. يُحلَّل النص ويُعرض ثم يُتخلَّص منه؛ ولا يُعاد سوى الجدول.
هل تُدعَم الحقول المقتبسة التي تحتوي فواصل في داخلها؟
نعم. يتبع المحلل RFC 4180: يمكن للحقول المقتبسة أن تحتوي الفاصل وفواصل الأسطر وعلامات الاقتباس المهرَّبة المكتوبة كعلامتي اقتباس مزدوجتين.
هل يمكنني استخدام فاصلة منقوطة أو جدولة بدلًا من الفاصلة؟
نعم. مرّر أي حرف مفرد في حقل delimiter؛ والقيمة الافتراضية هي الفاصلة.
ماذا لو لم تحتوِ بياناتي على صف ترويسة؟
اضبط header على القيمة false وسيُعرض الصف الأول كبيانات دون رسم خط فاصل.
ما أكبر حجم مدخل ممكن؟
حتى 1 ميغابايت و50,000 صف لكل طلب، وهو ما يغطي أي تصدير معدّ ليقرأه إنسان.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/text/csv-to-table \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"}'const res = await fetch("https://api.kit.forhosting.com/text/csv-to-table", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/csv-to-table",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/csv-to-table", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"csv":"name,role,city\\nAda Lovelace,Engineer,London\\nGrace Hopper,Admiral,New York\\nAlan Turing,Mathematician,London"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"csv":"name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/csv-to-table", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.csv_to_table",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 1 |
max_rows | 50000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تأخذ واجهة برمجة التطبيقات لتحويل CSV إلى جدول نصي نص CSV خامًا وتحوّله إلى جدول أحادي التباعد محاذى بدقة يمكنك لصقه في الطرفية أو ملف README أو رسالة commit أو دردشة.
الفواصل والترويسات والاستخدام اليومي
ويعمل الكود نفسه مجانًا في متصفحك على هذه الصفحة أيضًا، فيمكنك تنسيق تصدير ملصوق دون حساب، ولا تدفع سوى $0.002 لكل استدعاء عندما تؤتمت العملية عبر API.
أسئلة تقنية
ماذا يحدث عندما يحتوي صف على عدد خاطئ من الأعمدة؟
يفشل الاستدعاء بخطأ invalid_input يذكر الصف والعددين معًا. فعّل lenient لملء الصفوف القصيرة بخلايا فارغة.