如何使用PowerShell重命名含特殊字符的CSV列标题?
嘿,这个问题我太熟悉了!在PowerShell里处理带特殊字符(空格、点号、还有像掳这种非ASCII符号)的CSV列标题,核心就是正确引用这些特殊列名——不能直接像普通无特殊字符的列那样写$_.Avis,得换个写法才行。
核心解决方法:用方括号包裹特殊列名
当CSV列名包含空格、点、特殊符号时,把列名放在方括号[]里,PowerShell就能准确识别这个属性了。比如:
- 原列
N掳 Invent.→ 写成$_.['N掳 Invent.'] - 原列
Cd.Srv.Cl.→ 写成$_.['Cd.Srv.Cl.'] - 原列
Client Name→ 写成$_.['Client Name']
完整重命名示例代码
假设你想把所有特殊列都改成更简洁的标题(同时保留你原来对Avis列的修改需求),可以用这段代码:
# 替换成你的实际文件夹路径 $treatmentfolder = "C:\Your\Target\Folder" Import-Csv "$treatmentfolder\data.csv" | Select-Object @{Name='avis'; Expression={$_.Avis}}, @{Name='InventoryNumber'; Expression={$_.['N掳 Invent.']}}, @{Name='ServiceCode'; Expression={$_.['Cd.Srv.Cl.']}}, @{Name='ClientName'; Expression={$_.['Client Name']}} | Export-Csv -NoTypeInformation "$treatmentfolder\data2.csv"
额外实用提示
- 如果你的CSV文件存在编码问题(比如特殊字符
掳显示乱码),可以在Import-Csv时指定编码,比如Import-Csv -Encoding UTF8 "$treatmentfolder\data.csv",根据你的CSV实际编码调整(可选值有Default、Unicode、UTF7等)。 - 如果你只想修改某几列,同时保留其他原列,可以在
Select-Object里加上*,比如Select-Object *, @{Name='新标题'; Expression={$_.['旧特殊列名']}},这样会保留所有原列,同时替换/添加目标列。
内容的提问来源于stack exchange,提问作者UserToulouse31
相关产品推荐
相关产品推荐

