CSV 格式化工具

使用自定义分隔符选项格式化和规范化 CSV 数据

加载示例

CSV 输入

格式化后的 CSV

本地运行 · 粘贴密钥安全无忧
格式化后的 CSV 将显示在此处…
输出分隔符:

什么是 CSV 格式化?

CSV(逗号分隔值)格式化是将原始表格文本规范化的过程,使其分隔符、引用、空白字符和行尾符遵循一致的规则。RFC 4180 于 2005 年发布,定义了目前最广泛采用的 CSV 标准:字段以逗号分隔,记录以 CRLF 结尾,包含逗号、双引号或换行符的字段须用双引号括起。CSV 格式化工具会将杂乱或不一致的 CSV 数据重写为符合这些规范的形式。

实际使用中的 CSV 文件很少以规整的形式出现。Excel、Google Sheets 的电子表格导出以及数据库导出工具各自采用不同的引用策略、对空白字符的处理方式不同,并且可能使用分号或制表符代替逗号。当这些文件被传入严格要求 RFC 4180 格式的解析器时,往往会导致行断裂、列偏移或无声数据丢失。在处理之前先进行格式化,可以尽早发现这些问题。

CSV 格式化工具与 CSV 转换工具不同。格式化保留数据的 CSV 形式,仅规范引用、去除多余空白、对齐列,并可选择性地更换分隔符。转换则会完全改变格式,输出 JSON、HTML、SQL 或 Markdown 等内容。

为什么使用这个 CSV 格式化工具?

本工具完全在浏览器中解析和重新序列化您的 CSV 数据,数据始终不离开您的设备。

即时格式化
粘贴 CSV 数据后立即看到清理后的结果。格式化工具在您输入时即在浏览器中完成解析和重新序列化。
🔒
隐私优先处理
所有解析和格式化均在浏览器标签页中完成,数据不会通过网络传输。适用于不得离开本机的专有数据集、凭据和 PII。
🔧
可配置分隔符
在逗号、制表符、分号和管道符分隔符之间自由切换。工具自动检测输入分隔符,并允许您为输出选择不同的分隔符,使跨格式规范化操作简便易行。
📋
一键复制与下载
将格式化后的 CSV 复制到剪贴板或下载为文件,无需额外编辑即可导入数据库、电子表格或数据管道。

CSV 格式化工具使用场景

前端开发
清理用作 React 或 Vue 组件模拟数据的 CSV 测试文件。一致的引用规范可防止开发构建时出现解析失败。
后端数据摄取
在将第三方 API 导出的 CSV 数据输入 ETL 管道之前先进行规范化。去除空白字符并统一分隔符可避免列偏移问题。
DevOps 与 CI/CD
格式化纳入版本控制的 CSV 配置文件或种子数据。一致的格式可减少差异噪声,加快代码审查速度。
QA 与测试
准备具有已知引用和分隔符模式的 CSV 测试固件,使解析器输出的断言编写更加便捷。
数据工程
在将旧系统数据库的 CSV 导出加载到现代数据仓库之前进行预处理。修复引用问题和分隔符不匹配可节省大量调试时间。
学习与教育
通过粘贴不同输入并观察格式化工具如何对其规范化,实验 RFC 4180 引用规则,这是理解 CSV 边界情况的实践方式。

CSV 引用与转义规则(RFC 4180)

RFC 4180 定义了字段何时以及如何必须加引号的具体规则,以下六种场景涵盖了引用行为至关重要的情形。

场景示例规则
Field contains delimitername,"Smith, Jr."Wrap in double quotes
Field contains newline"line1\nline2"Wrap in double quotes
Field contains double quote"She said ""hello"""Double the quote character
Field is empty,,Two consecutive delimiters
Field has leading spaces" value"Quotes preserve whitespace
Field is numeric42No quotes required unless forced

CSV 分隔符对比

分隔符的选择影响兼容性、可读性,以及字段需要加引号的频率。

逗号(,)
RFC 4180 默认分隔符。每种 CSV 解析器和电子表格均支持。当字段值包含逗号时需要加引号,这在地址和文本数据中很常见。
制表符(\t)
用于 TSV(制表符分隔值)文件。字段数据中很少出现制表符,因此几乎不需要加引号。常见于生物信息学和数据库导出。
分号(;)
欧洲语言环境 CSV 导出(德国、法国、巴西)的标准分隔符,因为这些地区将逗号用作小数分隔符。当系统语言环境使用逗号小数时,Excel 会使用分号。
管道符(|)
在自然文本中很少出现,因此适合处理字段值中包含逗号和分号的杂乱数据。常见于大型机和旧系统的导出。

代码示例

以下示例展示如何在不同编程语言中解析杂乱的 CSV 并以一致的格式重新序列化。每段代码均处理空白字符去除、分隔符规范化和引用问题。

JavaScript (Node.js)
import { parse, unparse } from 'papaparse'

const messy = `name, age ,city
Alice , 30, Berlin
Bob,25 , " Tokyo "`

// Parse with trimming, then re-serialize with consistent formatting
const parsed = parse(messy, {
  header: true,
  skipEmptyLines: true,
  transformHeader: h => h.trim(),
  transform: v => v.trim(),
})

const clean = unparse(parsed.data, { quotes: true })
console.log(clean)
// → "name","age","city"
// → "Alice","30","Berlin"
// → "Bob","25","Tokyo"
Python
import csv
import io

messy = """name, age ,city
Alice , 30, Berlin
Bob,25 , " Tokyo " """

reader = csv.DictReader(io.StringIO(messy), skipinitialspace=True)
output = io.StringIO()
writer = csv.DictWriter(
    output,
    fieldnames=[f.strip() for f in reader.fieldnames],
    quoting=csv.QUOTE_ALL,
)
writer.writeheader()
for row in reader:
    writer.writerow({k.strip(): v.strip() for k, v in row.items()})

print(output.getvalue())
# → "name","age","city"
# → "Alice","30","Berlin"
# → "Bob","25","Tokyo"
Go
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()

	var buf strings.Builder
	w := csv.NewWriter(&buf)
	w.UseCRLF = true // RFC 4180 line endings
	for _, record := range records {
		_ = w.Write(record)
	}
	w.Flush()
	fmt.Print(buf.String())
	// → name,age,city\r\n
	// → Alice,30,Berlin\r\n
	// → Bob,25,Tokyo\r\n
}
CLI (csvformat from csvkit)
# Re-format a CSV file with csvkit (Python-based)
csvformat -D ";" input.csv > output.csv

# Convert tabs to commas
csvformat -t input.tsv > output.csv

# Force-quote all fields
csvformat -U 1 input.csv > quoted.csv

# Using Miller (mlr) to normalize
mlr --icsv --ocsv --quote-all cat input.csv > clean.csv

常见问题

CSV 格式化工具的作用是什么?
CSV 格式化工具解析原始 CSV 文本,规范字段引用,去除多余空白字符,并以一致的分隔符和行尾风格重新序列化数据。输出结果是符合 RFC 4180 或您所选格式规则的规整 CSV 文件。
CSV 格式化与 CSV 验证有何区别?
验证检查 CSV 文件是否符合一套规则并报告错误。格式化更进一步:它重写文件以修复这些问题。验证器告诉您第 5 行有一个未加引号的逗号,而格式化工具会通过为字段添加引号来修复它。
为什么需要在导入 CSV 文件之前先格式化?
数据库导入工具、ETL 管道和电子表格软件各自的 CSV 解析规则略有不同。包含逗号的未加引号字段在严格解析器中会被拆分为两列。在导入前将 CSV 格式化为符合 RFC 4180 的形式,可防止这些列偏移错误和无声数据损坏。
使用此工具时,我的数据会被发送到服务器吗?
不会。所有解析和格式化均在您的浏览器中通过 JavaScript 完成。您的 CSV 数据始终保留在本机,不会通过网络传输。您可以在使用工具时打开浏览器的"网络"标签页来验证这一点。
格式化时可以更改分隔符吗?
可以。工具自动检测输入分隔符(逗号、制表符、分号或管道符),并允许您为输出选择不同的分隔符。这在地区 CSV 格式之间转换或从 TSV 切换到标准 CSV 时非常有用。
工具如何处理包含嵌入换行符的带引号字段?
根据 RFC 4180,包含换行符的字段必须用双引号括起。格式化工具会保留这些嵌入的换行符,并确保外层引号存在。如果输入中某字段有未加引号的换行符,格式化工具会在重新序列化时为其添加引号。
此工具能处理的最大文件大小是多少?
由于工具在浏览器中运行,实际上限取决于设备的可用内存。在现代设备上,最大 10–20 MB 的文件通常可以顺利处理。对于更大的文件,建议使用命令行工具,如 csvkit 或 Miller。