要按分隔符拆分 CSV 行,可使用 Datablist 的 CSV Rows Splitter:选择包含多个值的列,指定单元格内的分隔符,预览展开后的行,然后下载规范化的 CSV。处理后,所选列的每个值会单独占一行,其他列则会复制到新生成的各行中。

当 CRM、电商平台导出文件、问卷数据或抓取结果把多个邮箱、标签、电话号码、分类、URL 或 ID 存在同一个单元格中时,我通常会采用这个流程。如果只是清理一个文件,它比配置公式更省事,而且导出前还能预览结果。

本指南介绍如何展开 CSV 某一列中的多个值。如果你想将一个大型 CSV 文件拆分成多个较小的文件,请改用 Datablist 的 CSV file splitter。

快速导航

按分隔符拆分 CSV 行是什么意思

按分隔符拆分 CSV 行,就是把一个字段中的多个值分别展开,让每个值单独占一行。

例如,原始数据行如下:

Name,Company,Emails,Tags
Mia Chen,Acme,"mia.chen@example.test,mia@workmail.test","lead,customer"

以逗号拆分 Emails 列后,会得到两行:

Name,Company,Emails,Tags
Mia Chen,Acme,mia.chen@example.test,"lead,customer"
Mia Chen,Acme,mia@workmail.test,"lead,customer"

所选列会发生变化,其他列则全部复制。无论是对联系人去重、向 CRM 导入每行一个邮箱的数据、统计标签,还是为下一步数据清理做准备,这通常都是更合适的数据结构。

🔑 关键区别

CSV 分隔符用于分隔文件中的不同列,而单元格分隔符用于分隔同一字段中的多个值。

不含所选单元格分隔符的记录会保留为一行。默认情况下,空单元格也会保留。如果某个单元格以分隔符结尾,例如 mia@example.test,,可以启用跳过空值选项,避免生成空白行。

输出文件会保留与输入文件相同的表头。只有当所选列包含多个值时,行数才会增加。

一个单元格包含多个邮箱的 CSV 示例

下面以联系人数据集为例,因为它能直观展示这个问题。文件包含以下列:

  • Name
  • Company
  • Emails
  • Tags
  • Phone Numbers
  • Source

有些联系人只有一个邮箱,有些联系人则在同一个 Emails 单元格中保存了两三个邮箱。部分单元格在逗号后带有空格,还可能包含重复值或末尾多余的分隔符。这些小问题恰好能说明各项清理选项的作用。

下面是精简后的输入示例:

Name,Company,Emails,Tags
Mia Chen,Acme,"mia.chen@example.test,mia@workmail.test","lead,customer"
Lucas Martin,Northwind,"lucas@northwind.test, l.martin@personal.test, lucas@ops.test","lead,partner"
Sofia Lopez,Bluebird,sofia.lopez@example.test,customer
Ava Patel,Orbit,"ava@orbit.test, ava@orbit.test, a.patel@workmail.test","newsletter,trial"

以逗号拆分 Emails 后,结果如下:

Name,Company,Emails,Tags
Mia Chen,Acme,mia.chen@example.test,"lead,customer"
Mia Chen,Acme,mia@workmail.test,"lead,customer"
Lucas Martin,Northwind,lucas@northwind.test,"lead,partner"
Lucas Martin,Northwind,l.martin@personal.test,"lead,partner"
Lucas Martin,Northwind,lucas@ops.test,"lead,partner"
Sofia Lopez,Bluebird,sofia.lopez@example.test,customer
Ava Patel,Orbit,ava@orbit.test,"newsletter,trial"
Ava Patel,Orbit,a.patel@workmail.test,"newsletter,trial"

请注意,"lead,customer" 这样的单元格外面有引号。当 CSV 字段内部也使用逗号时,必须用引号包住整个字段。否则,CSV 解析器可能把 lead 和 customer 识别为两个不同的列。

⚠️ 检查包含逗号的字段是否加了引号

如果逗号既是 CSV 的列分隔符,又是单元格内的分隔符,多值单元格必须加上引号。如果导入后数据错列,可以先阅读这份 CSV 引号指南。

截图使用的是一个包含 120 行数据的较大合成联系人 CSV。你不需要使用同一个文件才能跟着操作。任何包含多值列的 CSV 都可以。

第 1 步:打开 CSV Rows Splitter

打开 Datablist 的 CSV Rows Splitter。这个工具只做一件事:将指定 CSV 列中的多个值展开为多行。

你可以粘贴 CSV 文本,也可以上传 CSV 文件。我通常先粘贴几行样本来测试分隔符,确认设置合适后,再上传完整文件。

工具页面说明,处理在你的浏览器中本地进行,文件不会上传到服务器。如果你只想快速清理 CSV,又不想先创建完整的工作区,这种方式很方便。

CSV Rows Splitter 的粘贴和上传输入界面
CSV Rows Splitter 的粘贴和上传输入界面

此时先确认 CSV 是否被正确解析。拆分设置可以稍后处理,首先要看表头和各列是否对应。

第 2 步:粘贴或上传 CSV

将 CSV 粘贴到输入区域,或从电脑上传文件。练习时可以使用前面的示例;清理实际数据时则上传完整导出文件。

导入后,我会检查三件事:

  • 表头行是否被正确识别。
  • 多值字段是否仍然显示为一列。
  • 各个值是否落在正确的表头下。

如果 Emails 字段中的 a@example.test,b@example.test 显示在两个不同的列里,问题并不在行拆分工具。CSV 中包含逗号的字段很可能没有用引号包住。

我会先修复这个问题,再开始拆分。数据一旦错列,后续清理就会变得更困难,因为文件结构已经不正确。

Datablist 的拆分工具支持带引号的 CSV 字段,以及 UTF-8、Windows-1252 等常见编码。不过,预览仍然值得检查。文件来自 CRM 导出或抓取工具时,我尤其不会跳过这一步,因为其中经常混有不常见的分隔符或复制来的文本。

第 3 步:选择包含多个值的列

选择需要展开的列。在这个示例中,我选择 Emails。

工具可以根据 CSV 内容建议可能需要拆分的列和分隔符。我会把它当作快捷提示,而不是直接接受的最终设置。导出前仍然要核对所选列,因为同一个文件里,Emails、Tags 和 Phone Numbers 等多个字段都可能包含分隔符。

常见的拆分列包括:

  • Emails
  • Phone Numbers
  • Tags
  • Categories
  • Skills
  • Line Items
  • URLs

当前 CSV Rows Splitter 每次只展开一个指定列。你可以将下载的结果再次导入,继续拆分第二列,但要先判断两列中的值是相互独立,还是按位置配对。连续拆分会生成各种组合,并不会按列表位置配对。

CSV Rows Splitter 中所选邮箱列和分隔符设置
CSV Rows Splitter 中所选邮箱列和分隔符设置

对数据清理来说,一次只拆分一列通常是有益的。你可以逐步检查每次变化,避免把文件展开成并非预期的结构。

展开 CSV 列时如何保留数据关系

“展开一列”就是把其中的列表值转换为多行。拆分前保留 Source ID,让每条生成的新行都能追溯到原记录。行数增加,并不意味着独立客户的数量也增加了。

假设原始一行包含两个邮箱和三个电话号码。拆分 Emails 后会得到两行,每行仍保留全部三个电话号码。如果继续拆分导出文件中的 Phone Numbers,就会得到六行,也就是每个邮箱与每个电话号码的全部组合。拆分工具不知道哪个电话号码属于哪个邮箱。

阶段一条原记录生成的行数含义
原始记录:两个邮箱和三个电话号码1两个字段都仍包含列表。
拆分 Emails2每行一个邮箱;每行都复制全部电话号码。
继续拆分导出文件中的 Phone Numbers6生成所有邮箱和电话组合,并非已验证的配对。

如果两个列表是配对的,例如 Product ID 和 Quantity 的对应位置代表同一件商品,要先将它们一起重组,再使用单列拆分工具。如果它们只是相互独立的标签,生成组合可能正是你的目的。先检查目标系统要求的记录结构,再决定如何处理。

Remove duplicates 只删除每个原始单元格中完全相同的拆分片段。它不会对整个文件去重,也不会合并客户。比较区分大小写,因此 Lead 和 lead 仍是不同的值。Trim spaces 可以在比较前去掉两端空格,但不会统一大小写或拼写。

有意识地选择拆分列和分隔符,保留 Source ID,并在导出后按该 ID 核对记录数量。整个文件中的重复记录需要另外使用 CSV 去重流程。

第 4 步:选择单元格内的分隔符

接下来,选择指定单元格中用于分隔各个值的符号。

在 Emails 示例中,我选择逗号,因为单元格内容如下:

"mia.chen@example.test,mia@workmail.test"

Datablist 支持这些常见的单元格分隔符:

  • 逗号
  • 分号
  • 竖线
  • 制表符
  • 自定义分隔符

如果邮箱、标签和类别的值本身不包含逗号,可以使用逗号。公司名称、地点或类别名称中可能包含逗号时,分号或竖线通常更合适。某些系统导出时使用 /、### 或其他字符串,你可以选择自定义分隔符。

关键是选择指定单元格内部的分隔符,而不是 CSV 的列分隔符。CSV 文件可能用逗号分隔列,同时用分号分隔 Phone Numbers 单元格里的电话号码:

Name,Phone Numbers
Mia Chen,"+1-555-1000; +1-555-2000"

这个示例中,CSV 的列分隔符是逗号,单元格分隔符则是分号。

第 5 步:配置空格、重复值和空值选项

清理联系人数据时,我通常从这些设置开始:

  • 启用 Trim spaces。
  • 重复值只是清理噪声时,启用 Remove duplicates。
  • 单元格末尾可能带有分隔符时,启用 Skip empty values。

去掉两端空格是最容易采用的默认设置。它会把 lucas@northwind.test 变成 lucas@northwind.test。CRM 导出文件经常在逗号后保留一个空格,这可能影响后续的精确匹配。

当同一单元格重复出现相同的值时,去重选项很有用:

"ava@orbit.test, ava@orbit.test, a.patel@workmail.test"

启用去重后,这条记录只会生成一行 ava@orbit.test,而不是两行。我通常会对邮箱、电话号码、URL 和标签启用它,因为这些字段中的重复值通常没有额外含义。

如果重复本身有意义,就不要启用去重。例如,问卷答案或订单导出文件中重复的商品 ID 可能代表数量;删除这些重复值会改变数据含义。

跳过空值可以处理末尾分隔符:

"mia@example.test,"

如果不跳过空值,逗号后面的空白值可能会生成一条所选字段为空的输出记录。启用后,只保留邮箱对应的行。

🔍 我的默认设置

清理联系人数据时,我会先启用去空格、去重和跳过空值。只有重复值或空白值具有业务含义时,才会调整这些选项。

如果过滤后某个单元格的拆分值全部被移除,原始行仍然会保留。这样可以保护指定字段本来为空,或清理选项只移除了无效拆分片段的记录。

第 6 步:预览展开后的行

下载前,先检查预览和行数。

Rows before 是原始数据行数,Rows after 是展开后的行数。如果一个 120 行的文件变成了 190 行,就说明部分单元格包含两个或更多值。

我会在预览中检查几种记录:

  • 只有一个邮箱的联系人应仍然占一行。
  • 有两个邮箱的联系人应变成两行。
  • 启用去重后,重复邮箱不应生成重复行。
  • Company、Tags 和 Source 等其他列应复制到每条新生成的行。
  • 只有在我选择保留空值时,拆分列中才应出现空白值。
CSV Rows Splitter 的输出预览和下载结果
CSV Rows Splitter 的输出预览和下载结果

预览最多可能只显示 100 行输出。这不代表只导出 100 行。下载的 CSV 会包含完整生成结果。

⚠️ 预览用于检查结构

用预览确认结构,不必手动数完每一行。处理较大文件时,下载 CSV,再在电子表格、CRM 导入暂存流程或 Datablist 的 CSV editor 中检查完整结果。

第 7 步:下载规范化的 CSV

预览符合预期后,复制生成的 CSV,或将它下载下来。

少量数据可以直接复制。如果文件较大,或计划导入其他工具,我会选择下载 CSV。输出保留原来的表头,但指定列每行只包含一个值。

这种规范化结构更适合:

  • 要求每行一个邮箱或电话号码的 CRM 导入。
  • 按邮箱、电话号码、SKU、URL 或 ID 去重。
  • 统计标签、类别、技能或订单明细。
  • 在数据补全前筛选记录。
  • 与其他数据集进行关联。

如果下一步需要处理重复联系人,可以在拆分后使用 CSV 重复行清理流程。当我关心的标识符藏在一个多值单元格里时,我会先拆分,再去重。

使用结果前进行检查

将输出导入重要系统前,我会做下面的实际检查。

先找一条应该展开的记录:

Name,Company,Emails,Tags
Lucas Martin,Northwind,"lucas@northwind.test, l.martin@personal.test, lucas@ops.test","lead,partner"

拆分 Emails 后,应该变成:

Name,Company,Emails,Tags
Lucas Martin,Northwind,lucas@northwind.test,"lead,partner"
Lucas Martin,Northwind,l.martin@personal.test,"lead,partner"
Lucas Martin,Northwind,lucas@ops.test,"lead,partner"

接着抽查完整文件:

  • 对比拆分前后的行数。
  • 查找拆分列中的空值。
  • 筛选几个原本含有一个、两个和三个值的联系人。
  • 确认带引号的字段仍能在电子表格中正确打开。
  • 如果启用了去重,检查重复值是否得到处理。
  • 将完整文件导入 CRM 前,先验证一小批样本。

最后一点很重要。有些 CRM 要求每行一位联系人,并使用多个邮箱字段;另一些系统更适合每行一个邮箱,或使用单独的关联表。正确的 CSV 结构取决于目标系统的导入格式。

还可以拆分哪些 CSV 列

只要一个单元格中包含列表,这个流程就可以用于相应列。

商品标签就是一个例子。如果 Tags 列包含 electronics,computers,work,拆分后每个标签会占一行,方便统计、筛选和补全数据。

电话号码通常更适合使用分号或竖线:

Name,Phone Numbers
Mia Chen,"+1-555-1000; +1-555-2000"

这里建议启用去空格,因为电话导出文件经常在分号后带有空格。

拆分电商类别时,应选择不会出现在类别名称内部的分隔符。如果类别名称包含逗号,竖线比逗号更合适:

Product,Categories
Laptop,"Electronics|Computers|Work"

抓取到的 URL 也适用。一个抓取流程可能把多个个人资料 URL、商品 URL 或其他链接放在同一字段里。验证、补全或比较前,可以先将 URL 列表拆成每行一个 URL。

订单 ID 和订单明细也可以这样处理,但要注意数据含义。如果重复的商品 ID 代表数量,不要删除重复值;如果只是意外重复,则可以删除。

如果你的问题不是将值拆分为多行,而是清理一个多值字段内重复出现的值,可以阅读 多值字段去重指南。

CSV 行拆分常见问题排查

如果值出现在错误的表头下,CSV 很可能在拆分前就被错误解析。常见原因是字段中的逗号没有被引号包住。先修复引号或重新导出 CSV,再重新导入。

如果输出行数过多,先检查分隔符。实际分隔符可能是分号、竖线或自定义字符串,但你却选择了逗号。同时检查重复值和连续分隔符,例如 a@example.test,,b@example.test。

如果输出行数过少,查看指定列中的一个原始单元格,确认是否有没注意到的分隔符。例如,一些系统使用竖线导出列表:

"lead|customer|partner"

在这种情况下,使用逗号不会拆分出任何新值。

如果值的前面仍有空格,启用去空格并重新拆分。空格很容易被忽略,直到你尝试精确匹配邮箱或标签时才发现问题。

如果预览只显示 100 行,请下载 CSV。预览可能有显示上限,但导出文件会包含完整结果。

如果你想将一个 CSV 文件分成多个小文件,请使用 CSV file splitter。CSV Rows Splitter 展开的是行内的值,而 CSV file splitter 创建的是多个独立文件。

哪些场景适合按分隔符拆分 CSV 行

当下一步数据处理要求每行一个值时,可以使用这个流程。

它适用于:

  • 在去重前规范化 CRM 导出文件。
  • 将邮箱、电话号码、URL、标签、类别或 ID 整理成每行一个值。
  • 将抓取到的列表转换为可筛选和补全的多行数据。
  • 统计标签、技能、类别或关联记录。
  • 为不接受单字段多值的导入流程准备文件。
  • 检查重复值究竟是意外重复,还是数据本身的要求。

如果目标系统要求一行保留多个值,就不要使用这个流程。如果多个列需要同时建立关系模型,也不适合直接拆分;这时可能需要数据库式的数据整理流程,而不是简单的 CSV 转换。

不过,对多数清理任务来说,一次展开一列已经足够。你可以得到清楚的文件结构、明确的行数,并继续下一步处理。

结语

将 CSV 一列拆分为多行,关键是选对字段和分隔符。上传或粘贴 CSV,选择多值列,指定单元格内的分隔符,配置清理选项,检查预览,然后下载规范化文件。

输出保留原始表头,复制其他列,并让指定列每行只包含一个值。这样的结构更方便去重、导入、筛选、统计和补全。

准备尝试时,打开 CSV Rows Splitter,先用几行样本确认结果,再处理完整文件。

常见问题

如何把 CSV 单元格中用逗号分隔的值拆成多行?

打开 Datablist 的 CSV Rows Splitter,粘贴或上传 CSV,选择包含逗号分隔值的列,将单元格分隔符设为逗号,预览展开后的行,再下载结果。

CSV 分隔符和单元格内的分隔符有什么区别?

CSV 分隔符用于分隔文件中的不同列,单元格内的分隔符用于分隔同一个字段中的多个值。例如,CSV 可以用逗号分隔列,而 Phone Numbers 单元格用分号分隔电话号码。

不用 Excel 能把 CSV 列拆成多行吗?

可以。使用在线 CSV Rows Splitter 粘贴或上传文件,选择列和分隔符,预览结果,再导出新的 CSV。你不需要公式、Power Query 或手动复制粘贴。

可以同时拆分多个 CSV 列吗?

当前流程每次只展开一个指定列。如果需要拆分多个列,先下载第一轮结果,再将导出的 CSV 重新交给工具,处理下一列。

拆分一行后,其他列会怎样?

其他列会复制到新生成的各行。如果一条联系人记录包含三个邮箱,Name、Company、Tags 等字段会复制到三条输出行。

为什么用逗号分隔的值被拆到了不同列?

单元格可能包含逗号,却没有作为一个 CSV 字段加上引号。"a@example.test,b@example.test" 这样的内容应保留在同一字段里。如果没有引号,CSV 解析器可能将逗号视为列分隔符。

预览包含全部输出行吗?

不一定。预览最多可能只显示 100 行,但下载的 CSV 会包含完整生成结果。

什么时候应该删除单元格内的重复值?

如果重复值只是清理噪声,例如重复的邮箱、标签、电话号码、URL 或 ID,可以启用去重。如果重复具有意义,例如重复的商品 ID 代表数量,则应关闭去重。