CSV 格式化工具
使用自定义分隔符选项格式化和规范化 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 delimiter | name,"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 numeric | 42 | No 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。