分隔符
分隔符(delimiter)是用来标记数据边界的字符或字符序列,用于把一段连续的文本切分成若干独立的部分(字段、记录或标记)。它本身不是数据,只是「哪里到哪里是一段」的约定。最常见的例子包括 CSV 里的逗号 ,、TSV 里的制表符 \t、换行符 \n(分隔行/记录),以及 ;、|、空格等。
工作原理很直接:解析时按分隔符把字符串拆开(如 split),拼接时再把分隔符插回元素之间(如 join)。用它可以在纯文本里表达结构化数据,无需二进制格式,通用又易读。要点:
- 当数据本身包含分隔符(比如地址里带逗号),必须靠引号包裹或转义来消歧,CSV 通常用双引号,字段内的引号再翻倍(RFC 4180)。
- 分隔符(separator,只放在元素之间)和终止符(terminator,每个元素后都有,包括最后一个)是两回事,别混用。
- 制表符、空格等不可见字符容易看错,选分隔符时优先挑数据中不会出现的字符。
常见问题
数据内容里正好包含分隔符(比如逗号),会不会被错误切开?
会。所以要么用引号把整个字段包起来(CSV 标准做法,字段内的引号再翻倍写成两个),要么对分隔符做转义,要么换一个数据里不会出现的字符当分隔符。
分隔符(separator)和终止符(terminator)有什么区别?
分隔符只出现在元素<em>之间</em>,n 个元素有 n-1 个;终止符跟在<em>每个</em>元素后面,包括最后一个。比如 <code>a,b,c</code> 用的是分隔符,而每行末尾都带的换行更接近终止符,处理末尾空元素时容易踩坑。
CSV 一定要用逗号吗?能不能用制表符或竖线?
不是必须。逗号只是最常见的约定,制表符(TSV)、分号、<code>|</code> 都能用。当数据里频繁出现逗号时,换成制表符或竖线往往更省事,转成 CSV 时(如本站 json-to-csv)也可指定分隔符。