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

标签 powershell csv

我有一个包含 ID_code 列的 csv 文件,并且 ID 具有我想要删除的前导零。我发现如果我将值转换为整数,前导零应该消失,但我不知道如何将其应用于整个 csv 中的所有值。这是我尝试过的,但生成的 csv 显示为空白:

Import-Csv C:\folder\myFile.csv |
  ForEach-Object {
    $_.ID_code = [convert]::ToInt32($_.ID_code, 10)  } |

转换为-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'

关于powershell - 在 PowerShell 中将 csv 列中的所有值转换为整数(或删除前导零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073525/

相关文章:

powershell - 如何使用 Test-Connection 在 Powershell 中计算平均 ping 响应时间?

regex - 为什么Powershell Regex.Replace会吞下换行符?

powershell - 使用Powershell静默卸载应用程序

python - 提取内存中单个文件的 bz2 文件

Powershell base64 与常规 base64

.net - 为什么-ErrorVariable在PS ISE中运行时可以工作,但通过cmd行运行时却不能工作?

javascript - MongoDB 管理

C++ - 无法将 CSV 解析到我的结构中

javascript - 将对象的属性转换为逗号分隔的列表?

python - 自动将 CSV 导入 Outlook 日历