使用特殊字符重命名 CSV 文件中的列标题



我的标头如下:

Avis,N° Invent.,Cd.Srv.Cl.,客户端名称

我找到了这段代码来更改我的标头

Import-Csv "$treatmentfolderdata.csv" |
Select-Object @{expression={$_.Avis}; label='avis'} |
Export-Csv -NoTypeInformation "$treatmentfolderdata2.csv"

如何更改字符为空格、.°等的标题名称?

要选择和重命名特定字段,请将要更改其名称的字段的名称放在引号中:

... | Select-Object @{n='no_invent';e={$_.'N° Invent.'}}, ... | ...

要替换特定字段,除了创建重命名的字段外,还要排除原始字段:

... | Select-Object *,@{n='no_invent';e={$_.'N° Invent.'}} -Exclude 'N° Invent.' | ...

由于 CSV 只是一个文本文件,我们可以将其视为文件第一行的字符串替换(数组项0(

此选项使用简单的正则表达式来删除任何不是:0-9a-zA-Z,(空格(的内容,因此只需修改要保留到正则表达式中的任何其他字符即可。这将适用于任何标头名称。

$content = Get-Content -Path "$treatmentfolderdata.csv"
$content[0] = $content[0] -replace '[^0-9a-zA-Z, ]'
Set-Content "$treatmentfolderdata.csv"

另一种选择是将多个CC_9链接在一起,这使您可以根据需要添加/删除/更改标头。但与上面的选项不同,它是硬编码到特定的标头名称,因此运行不同的文件并不那么简单。

$content[0] = $content[0] -replace 'N° Invent.','No_Invent' -replace 'Cd.Srv.Cl.','Cd-Srv-Cl'

最新更新