CSV إلى Markdown
تحويل CSV إلى جدول Markdown
مدخلات CSV
مخرجات Markdown
ما هو تحويل CSV إلى Markdown؟
تحويل CSV إلى جدول Markdown مهمة شائعة للمطورين. يخزّن CSV (القيم المفصولة بفواصل) البيانات الجدولية كنص عادي، حيث يُوضع كل صف في سطر منفصل وتُفصل الحقول بمحدد مثل الفاصلة أو علامة الجدولة. وهو صيغة التصدير الافتراضية لجداول البيانات وعملاء SQL وأدوات التحليل. ملفات CSV موجزة وسهلة التوليد، لكنها لا توفر أي طريقة مدمجة للتحكم في طريقة عرض البيانات. ملف CSV مفتوح في محرر نصوص يبدو كسلسلة متراصة من القيم المفصولة بفواصل، قابلة للقراءة آلياً لكن يصعب على الإنسان تفحصها.
تحل جداول Markdown هذه المشكلة في قابلية القراءة. وهي محددة وفق مواصفة GitHub Flavored Markdown (GFM) ومدعومة من GitHub وGitLab وBitbucket وNotion وObsidian ومولدات المواقع الثابتة مثل Hugo وJekyll — في أي مكان تُعالَج فيه Markdown تُصيَّر كجداول HTML نظيفة. تستخدم الصيغة الأنابيب (pipe) لفصل الأعمدة وصف فاصل إلزامي من شرطات بين صف الرأس وصفوف البيانات.
تحويل CSV إلى جدول Markdown يعني تغليف كل صف بصيغة مفصولة بأنابيب وإدراج صف الفاصل بعد الرأس. يصبح الصف الأول من CSV رأس الجدول، وكل صف لاحق يصبح صف بيانات. تحتاج إلى ذلك كلما لصقت بيانات منظمة في README أو وصف طلب سحب أو صفحة wiki أو أي نظام توثيق يعتمد Markdown.
لماذا تستخدم هذه الأداة؟
يحلل هذا المحوّل ملف CSV الخاص بك في المتصفح ويبني مخرجات جدول Markdown فوراً دون إرسال بياناتك إلى أي خادم.
حالات استخدام CSV إلى Markdown
مرجع صيغة جداول Markdown
تتبع جداول Markdown مواصفة GitHub Flavored Markdown (GFM). كل جدول يتطلب صف رأس وصف فاصل وصف بيانات واحد أو أكثر. يتحكم صف الفاصل في محاذاة الأعمدة.
| العنصر | الصيغة | الوصف |
|---|---|---|
| Column separator | | | Separates each cell within a row |
| Header row | | Name | Age | | First row of the table, defines column names |
| Separator row | | --- | --- | | Required second row; separates header from body |
| Left align | | :--- | | Default alignment — colon on the left side |
| Center align | | :---: | | Colons on both sides of the dashes |
| Right align | | ---: | | Colon on the right side only |
| Escaped pipe | \| | Use backslash to include a literal pipe in cell text |
CSV مقابل جدول Markdown
تمثل كلتا الصيغتين البيانات الجدولية كنص عادي. CSV مخصص للآلات وخطوط أنابيب البيانات؛ أما جداول Markdown فمخصصة للإنسان الذي يقرأ التوثيق.
أمثلة برمجية
تُظهر الأمثلة التالية كيفية تحويل CSV إلى جدول Markdown برمجياً بلغات مختلفة. كل مثال ينتج جدول GFM صالح.
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`
const [headerLine, ...rows] = csv.trim().split('\n')
const headers = headerLine.split(',')
const separator = '| ' + headers.map(() => '---').join(' | ') + ' |'
const headerRow = '| ' + headers.join(' | ') + ' |'
const bodyRows = rows.map(row =>
'| ' + row.split(',').join(' | ') + ' |'
)
const markdown = [headerRow, separator, ...bodyRows].join('\n')
// → | name | age | city |
// → | --- | --- | --- |
// → | Alice | 30 | Berlin |
// → | Bob | 25 | Tokyo |import csv
import io
csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""
reader = csv.reader(io.StringIO(csv_string))
rows = list(reader)
headers = rows[0]
lines = []
lines.append('| ' + ' | '.join(headers) + ' |')
lines.append('| ' + ' | '.join('---' for _ in headers) + ' |')
for row in rows[1:]:
lines.append('| ' + ' | '.join(row) + ' |')
print('\n'.join(lines))
# → | name | age | city |
# → | --- | --- | --- |
# → | Alice | 30 | Berlin |
# → | Bob | 25 | Tokyo |
# With pandas (one-liner)
import pandas as pd
df = pd.read_csv(io.StringIO(csv_string))
print(df.to_markdown(index=False))package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
r := csv.NewReader(strings.NewReader(input))
records, _ := r.ReadAll()
headers := records[0]
var lines []string
lines = append(lines, "| "+strings.Join(headers, " | ")+" |")
sep := make([]string, len(headers))
for i := range sep {
sep[i] = "---"
}
lines = append(lines, "| "+strings.Join(sep, " | ")+" |")
for _, row := range records[1:] {
lines = append(lines, "| "+strings.Join(row, " | ")+" |")
}
fmt.Println(strings.Join(lines, "\n"))
// → | name | age | city |
// → | --- | --- | --- |
// → | Alice | 30 | Berlin |
// → | Bob | 25 | Tokyo |
}# Using Miller (mlr) — convert CSV to Markdown table mlr --icsv --omarkdown cat data.csv # → | name | age | city | # → | --- | --- | --- | # → | Alice | 30 | Berlin | # Using csvtomd (pip install csvtomd) csvtomd data.csv # Using pandas in a one-liner python3 -c " import pandas as pd, sys print(pd.read_csv(sys.argv[1]).to_markdown(index=False)) " data.csv