如何将CSV文件同一列中的两个值拆分为两列?
嘿,这个需求太普遍了!不管你是用办公软件、写代码还是命令行,都有简单的解决方案,我给你列几种最常用的:
方法1:Excel/Google Sheets(适合非编程用户)
如果是新版Excel(2021及以后),直接用TEXTSPLIT函数就能一键拆分:
- 假设姓名列在A列,第一行是表头,在B2单元格输入:
=TEXTSPLIT(A2, " ")(这里的空格是分隔两个姓名的符号,如果是顿号、逗号,直接换成对应符号就行) - 按回车后,B2和C2会自动分别显示第一个和第二个姓名,下拉填充整列就搞定。
要是用的旧版Excel没有TEXTSPLIT,就用LEFT+FIND组合:
- 提取第一个姓名:
=LEFT(A2, FIND(" ", A2)-1) - 提取第二个姓名:
=RIGHT(A2, LEN(A2)-FIND(" ", A2))
Google Sheets更简单,用SPLIT函数就行:
- 在B2输入:
=SPLIT(A2, " "),同样替换分隔符为你实际用的符号。
方法2:Python(适合批量处理/自动化场景)
如果要处理大量CSV文件,或者需要自动化操作,用Python的pandas库最省心:
先确保安装了pandas:pip install pandas
然后写几行代码就行:
import pandas as pd # 读取你的CSV文件 df = pd.read_csv("你的文件名.csv") # 拆分姓名列,expand=True会把拆分结果直接变成两列 # 把"原姓名列"换成你实际的列名," "换成你的分隔符 df[["姓名1", "姓名2"]] = df["原姓名列"].str.split(" ", expand=True) # 保存处理后的CSV,index=False是去掉自动生成的索引列 df.to_csv("拆分后的文件名.csv", index=False)
要是你的姓名分隔符不是空格(比如顿号、),把str.split(" ")改成str.split("、")就好。
方法3:命令行awk(适合Linux/macOS用户)
如果你习惯用命令行快速处理,awk是个好工具:
假设CSV里要拆分的是第3列(从1开始计数),列分隔符是逗号,姓名之间用空格分隔,执行这个命令:
awk -F',' '{split($3, names, " "); print $1","$2","names[1]","names[2]","substr($0, index($0,$4))}' input.csv > output.csv
简单解释下:
-F','指定CSV的列分隔符是逗号split($3, names, " ")把第3列按空格拆成数组,names[1]是第一个姓名,names[2]是第二个print后面的内容是把原列和拆分后的两列重新组合,最后重定向到新文件里。
需要调整列数或分隔符的话,对应修改参数就行。
内容的提问来源于stack exchange,提问作者Olympus
相关产品推荐
相关产品推荐

