在PowerShell中将csv列中的所有值转换为整数(或删除前导零)

时间:2015-01-21 17:41:58

标签: powershell csv

我有一个带有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

1 个答案:

答案 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'