You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell解析修改CSV并优化脚本?含格式处理与保存需求

处理CSV文件的PowerShell脚本优化与保存方案

原始CSV示例

id,location_id,name,title,email,directorate 
1,1, Amy lee,Singer,, 
2,2,brad Pitt,Actor,,Production 
3,5,Steven Spielberg,Producer,spielberg@my.com,Production

需求

  • 将姓名改为首字母大写格式(如Brad Pitt、Amy Lee)
  • 按规则生成邮箱:名字首字母+姓氏(全小写)+location_id值+@google.com(如alee1@google.com、bpitt2@google.com)
  • 将处理后的内容保存为新的file.csv,保持原有结构

现有脚本

param (
    [string] $file_path
)

$inputFile = Import-Csv -Path $file_path

foreach ($line in $inputFile) {
    $line.name = (Get-Culture).TextInfo.ToTitleCase($line.name)
    $firstName = $line.name.split(" ")[0]
    $lastName = $line.name.split(" ")[1]
    $newEmail = ($firstName[0] + $lastName + $line.location_id + "@google.com").toLower()
} 

解决方案

1. 修复现有脚本并添加保存逻辑

你的脚本已经完成了核心逻辑,但存在两处问题:生成的邮箱未赋值给对象字段,缺少保存步骤。修改后的完整脚本如下:

param (
    [string] $file_path
)

$inputFile = Import-Csv -Path $file_path

foreach ($line in $inputFile) {
    # 格式化姓名,同时去除前后空格
    $line.name = (Get-Culture).TextInfo.ToTitleCase($line.name.Trim())
    # 拆分姓名,兼容中间多空格的情况
    $nameParts = $line.name -split "\s+", 2
    $firstName = $nameParts[0]
    $lastName = $nameParts[1]
    # 生成邮箱并赋值给对象的email字段
    $line.email = ($firstName[0] + $lastName + $line.location_id + "@google.com").ToLower()
}

# 将处理后的数据导出到新CSV文件
$inputFile | Export-Csv -Path "file.csv" -NoTypeInformation -Encoding UTF8

说明:

  • 新增.Trim()处理姓名前后的冗余空格
  • 用-split "\s+", 2拆分姓名,避免中间多空格导致的拆分错误,同时支持姓氏包含多个单词的情况
  • 将生成的邮箱赋值给$line.email,确保修改后的数据被保留
  • Export-Csv的-NoTypeInformation参数避免生成PowerShell类型信息行,-Encoding UTF8保证文件编码兼容性

2. 更简洁的管道式实现

利用PowerShell的管道特性,简化代码结构,减少中间变量:

param (
    [string] $file_path
)

Import-Csv -Path $file_path | ForEach-Object {
    # 格式化姓名
    $_.name = (Get-Culture).TextInfo.ToTitleCase($_.name.Trim())
    # 拆分姓名并生成邮箱
    $nameParts = $_.name -split "\s+", 2
    $_.email = ($nameParts[0][0] + $nameParts[1] + $_.location_id + "@google.com").ToLower()
    # 输出处理后的对象
    $_
} | Export-Csv -Path "file.csv" -NoTypeInformation -Encoding UTF8

这个版本直接通过管道串联数据导入、处理、导出流程,代码更紧凑,符合PowerShell的原生编程风格。

内容的提问来源于stack exchange,提问作者Art

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:55:20