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 تمیز رندر میشوند. نحو از کاراکترهای پایپ برای جداسازی ستونها و یک سطر جداکننده اجباری از خطتیره بین سطر سرصفحه و سطرهای بدنه استفاده میکند.
تبدیل CSV به جدول Markdown به معنای قرار دادن هر سطر در قالب جداشده با پایپ و درج سطر جداکننده پس از سرصفحه است. اولین سطر CSV به سرصفحه جدول تبدیل میشود و هر سطر بعدی به یک سطر بدنه. این تبدیل برای درج دادههای ساختاریافته در README، توضیح pull request، صفحه ویکی یا هر سامانه مستندسازی مبتنی بر 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 برای ماشینها و pipelineهای داده است؛ جداول 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