在 PowerShell 中将 csv 列中的所有值转换为整数(或删除前导零)
Convert all values in a csv column to integer (or remove leading zeroes) in PowerShell
我有一个包含 ID_code 列的 csv 文件,并且 ID 具有我想要删除的前导零。我发现如果将值转换为整数,前导零应该消失,但我不知道如何将其应用于整个 csv 中的所有值。这是我尝试过的,但生成的 csv 是空白的:
Import-Csv C:\folder\myFile.csv |
ForEach-Object {
$_.ID_code = [convert]::ToInt32($_.ID_code, 10) } |
convertto-csv -NoTypeInformation | %{$_-替换 '"', ""} |
输出文件 C:\folder\myFile2.csv
您可以为此使用 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'
我有一个包含 ID_code 列的 csv 文件,并且 ID 具有我想要删除的前导零。我发现如果将值转换为整数,前导零应该消失,但我不知道如何将其应用于整个 csv 中的所有值。这是我尝试过的,但生成的 csv 是空白的:
Import-Csv C:\folder\myFile.csv |
ForEach-Object {
$_.ID_code = [convert]::ToInt32($_.ID_code, 10) } |
convertto-csv -NoTypeInformation | %{$_-替换 '"', ""} | 输出文件 C:\folder\myFile2.csv
您可以为此使用 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'