我有一个带有ID_code列的csv文件,ID有我要删除的前导零。我发现如果我将值转换为整数,则前导零应该消失,但我不知道如何将其应用于整个csv中的所有值。这是我尝试过的,但结果csv出现了空白:
Import-Csv C:\folder\myFile.csv |
ForEach-Object {
$_.ID_code = [convert]::ToInt32($_.ID_code, 10) } |
convertto-csv -NoTypeInformation | %{$ _- replace'"',""} | out-file C:\ folder \ myFile2.csv
答案 0 :(得分:0)
您可以使用calculated property。但是,您不需要解析该值。只需将其转换为int
即可:
Import-Csv 'C:\path\to\input.csv' |
select -Property @{n='ID_code';e={[int]$_.ID_code}},* -Exclude 'ID_code' |
Export-Csv 'C:\path\to\output.csv'
另一种选择(因为你无论如何都要将数据导回文本文件)只是从字符串值中删除前导零:
Import-Csv 'C:\path\to\input.csv' |
select -Property @{n='ID_code';e={$_.ID_code -replace '^0+'}},* -Exclude 'ID_code' |
Export-Csv 'C:\path\to\output.csv'
如果您知道ID_code
列的位置,则甚至无需导入CSV。例如,如果列是CSV中的第一列,则可以执行以下替换:
(Get-Content 'C:\path\to\input.csv') -replace '^0+' |
Set-Content 'C:\path\to\output.csv'