如何用PowerShell或Excel将含用户信息的文本文件转为CSV?
纯文本转CSV:提取名字、含中间名的姓氏及邮箱
针对你需要将大体积纯文本文件快速转换为指定CSV格式的需求,下面是几种高效的实现方法:
方法1:使用awk命令(适用于Linux/macOS/Windows WSL)
awk是处理文本的轻量工具,处理大文件速度极快,无需额外安装。
命令实现
可以直接执行单行命令:
awk 'BEGIN{print "FirstName,LastName,EmailAddress"} {email=$NF; first=$1; last=""; for(i=2;i<=NF-1;i++) last=last$i; print first","last","email}' input.txt > output.csv
或者将逻辑保存为脚本文件(convert.awk):
BEGIN {print "FirstName,LastName,EmailAddress"} { email = $NF # 取最后一个字段作为邮箱地址 first = $1 # 第一个字段作为名字 # 合并第二个到倒数第二个字段为姓氏(包含中间名) last = "" for (i=2; i<=NF-1; i++) { last = last $i } print first "," last "," email }
执行脚本:
awk -f convert.awk input.txt > output.csv
方法2:PowerShell脚本(适用于Windows系统)
利用Windows自带的PowerShell,无需额外安装工具:
# 写入CSV表头 "FirstName,LastName,EmailAddress" | Out-File output.csv -Encoding utf8 # 逐行处理输入文件 Get-Content input.txt | ForEach-Object { # 按空格分割行内容,过滤空字符串 $parts = $_ -split '\s+' | Where-Object { $_ -ne "" } $firstName = $parts[0] # 合并中间名与姓氏 $lastName = $parts[1..($parts.Count-2)] -join "" $email = $parts[-1] # 将结果追加到CSV文件 "$firstName,$lastName,$email" | Out-File output.csv -Encoding utf8 -Append }
将上述代码保存为convert.ps1,右键选择“用PowerShell运行”即可。
方法3:Python脚本(跨平台通用)
如果需要更灵活的扩展(比如处理特殊字符、异常行),可以用Python脚本:
with open('input.txt', 'r', encoding='utf-8') as infile, open('output.csv', 'w', encoding='utf-8', newline='') as outfile: # 写入CSV表头 outfile.write('FirstName,LastName,EmailAddress\n') for line in infile: line = line.strip() if not line: # 跳过空行 continue parts = line.split() first_name = parts[0] # 合并中间名和姓氏字段 last_name = ''.join(parts[1:-1]) email = parts[-1] outfile.write(f'{first_name},{last_name},{email}\n')
保存为convert.py,在终端执行python convert.py即可完成转换。
内容的提问来源于stack exchange,提问作者jabberwocky
相关产品推荐
相关产品推荐

