如何自动拆分CSV中一对多的姓名-邮箱列表为一对一格式?
拆分CSV中一对多的姓名-邮箱数据
方法1:使用Excel/Google Sheets(适合非编程用户)
针对1万行数据,用Power Query批量处理最省心:
- Excel操作:
- 打开目标CSV文件,选中数据区域,点击「数据」选项卡 → 「从表格/范围」(勾选「我的表格有标题」如果第一行是表头)
- 在Power Query编辑器中,选中姓名列,右键选择「逆透视其他列」
- 删除自动生成的「属性」列,将「值」列重命名为「邮箱」
- 点击「关闭并上载」,拆分后的数据会导入新工作表,再导出为CSV即可
- Google Sheets操作:
- 上传CSV到Google Sheets,点击「数据」→ 「数据整理」→ 「逆透视列」
- 选择姓名列,设置「逆透视所有其他列」,确认后删除多余列,最后下载为CSV
方法2:使用Python脚本(高效处理大文件)
如果会点Python,这个方法最快:
import csv input_path = "你的源文件.csv" output_path = "拆分后的文件.csv" with open(input_path, 'r', encoding='utf-8') as infile, open(output_path, 'w', encoding='utf-8', newline='') as outfile: csv_reader = csv.reader(infile) csv_writer = csv.writer(outfile) for line in csv_reader: if not line: continue username = line[0] # 遍历所有邮箱字段 for email in line[1:]: if email.strip(): # 跳过空值 csv_writer.writerow([username, email])
替换input_path和output_path为实际文件路径,运行脚本即可生成目标CSV。
方法3:使用命令行awk(适合终端用户)
在Linux/macOS终端或Windows WSL中执行以下命令:
awk -F ',' '{name=$1; for(i=2; i<=NF; i++) print name "," $i}' 源文件.csv > 输出文件.csv
这个命令会自动遍历每行的邮箱字段,和姓名拼接后写入新文件。
内容的提问来源于stack exchange,提问作者markothehacker
相关产品推荐
相关产品推荐

