CSV to Markdown
Konvertera CSV till en Markdown-tabell
CSV-inmatning
Markdown-utmatning
Vad är CSV till Markdown-konvertering?
Att konvertera CSV till en Markdown-tabell är en vanlig uppgift för utvecklare. CSV (Comma-Separated Values) lagrar tabelldata som oformaterad text, med varje rad på en egen rad och fälten separerade av en avgränsare, till exempel ett kommatecken eller en tabb. Det är standardexportformatet för kalkylblad, SQL-klienter och analysverktyg. CSV-filer är kompakta och enkla att generera, men de saknar inbyggda möjligheter att styra hur data ser ut när det visas. En CSV-fil öppnad i en textredigerare är en vägg av kommaavgränsade strängar — läsbar för maskiner men svår för människor att överblicka.
Markdown-tabeller löser detta läsbarhetsproblem. De definieras av GitHub Flavored Markdown (GFM)-specifikationen och stöds av GitHub, GitLab, Bitbucket, Notion, Obsidian och statiska webbplatsgeneratorer som Hugo och Jekyll — överallt där Markdown bearbetas renderas de som rena HTML-tabeller. Syntaxen använder pipe-tecken för att separera kolumner och en obligatorisk separatorrow med streck mellan rubrik- och brödtextraderna.
Att konvertera CSV till en Markdown-tabell innebär att varje rad omsluts i pipe-avgränsad syntax och att separatorraden infogas efter rubriken. Den första raden i CSV:en blir tabellrubriken och varje efterföljande rad blir en brödtextrad. Du behöver detta när du klistrar in strukturerad data i en README, en pull request-beskrivning, en wiki-sida eller ett Markdown-dokumentationssystem.
Varför använda det här verktyget?
Den här konverteraren tolkar din CSV i webbläsaren, bygger Markdown-tabellutmatningen omedelbart och skickar aldrig dina data till en server.
Användningsfall för CSV till Markdown
Referens för Markdown-tabellsyntax
Markdown-tabeller följer GitHub Flavored Markdown (GFM)-specifikationen. Varje tabell kräver en rubrikrad, en separatorrow och en eller flera brödtextrader. Separatorraden styr kolumnjustering.
| Element | Syntax | Beskrivning |
|---|---|---|
| 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 vs Markdown-tabell
Båda formaten representerar tabelldata som oformaterad text. CSV är för maskiner och datapipelines; Markdown-tabeller är för människor som läser dokumentation.
Kodexempel
Följande exempel visar hur man konverterar CSV till en Markdown-tabell programmatiskt i olika språk. Vart och ett producerar en giltig GFM-tabell.
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