แปลง CSV เป็น Markdown
แปลง CSV เป็นตาราง Markdown
CSV อินพุต
Markdown เอาต์พุต
การแปลง CSV เป็น Markdown คืออะไร?
การแปลง CSV เป็นตาราง Markdown เป็นงานทั่วไปของนักพัฒนา CSV (Comma-Separated Values) จัดเก็บข้อมูลตารางในรูปแบบข้อความธรรมดา โดยแต่ละแถวอยู่ในบรรทัดของตัวเอง และฟิลด์แต่ละช่องคั่นด้วยตัวคั่น เช่น เครื่องหมายจุลภาคหรือแท็บ CSV เป็นรูปแบบส่งออกหลักของสเปรดชีต SQL client และเครื่องมือวิเคราะห์ข้อมูล ไฟล์ CSV มีขนาดกะทัดรัดและสร้างง่าย แต่ไม่มีวิธีในตัวที่จะควบคุมรูปลักษณ์ของข้อมูลเมื่อแสดงผล ไฟล์ CSV ที่เปิดด้วยโปรแกรมแก้ไขข้อความจะเห็นเป็นสตริงคั่นด้วยจุลภาคซึ่งเครื่องอ่านได้แต่มนุษย์อ่านยาก
ตาราง Markdown แก้ปัญหาความอ่านยากนี้ได้ ตารางเหล่านี้นิยามโดยข้อกำหนด GitHub Flavored Markdown (GFM) และรองรับโดย GitHub, GitLab, Bitbucket, Notion, Obsidian และ static site generator อย่าง Hugo และ Jekyll — ทุกที่ที่ประมวลผล Markdown ตารางจะแสดงผลเป็นตาราง HTML ที่สะอาด รูปแบบนี้ใช้อักขระ pipe คั่นคอลัมน์และแถวคั่นด้วยขีดกลางที่จำเป็นระหว่างแถวหัวและแถวเนื้อหา
การแปลง CSV เป็นตาราง Markdown หมายถึงการห่อแต่ละแถวด้วยรูปแบบ pipe-delimited และแทรกแถวคั่นหลังหัวตาราง แถวแรกของ CSV จะกลายเป็นหัวตาราง และแถวถัดมาแต่ละแถวจะกลายเป็นแถวเนื้อหา คุณต้องการสิ่งนี้เมื่อวางข้อมูลที่มีโครงสร้างลงใน README คำอธิบาย pull request หน้า 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 ใช้สำหรับเครื่องและ data 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