You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell导入CSV筛选数据时遇System.Int32类型转换错误求助

解决CSV导入后utilization列数值转换失败的问题

执行以下PowerShell命令筛选CSV中utilization列大于80的行时:

Import-Csv 'C:\temp\t\xxxx.csv' | Where-Object {[int]$_.utilization -gt 80}

出现两类错误:

  1. 无法将格式为"17 %"的字符串转换为System.Int32,提示输入格式不正确
  2. 单独执行$util = [int]$_.utilization时,提示无法将System.Object[]类型转为System.Int32

问题原因

  • 第一类错误:utilization列的值是带百分号的字符串,直接强转整数会失败
  • 第二类错误:$_.utilization是对象数组,可能是CSV中存在重复列名,或该列单元格包含多值

解决方案

1. 处理带百分号的字符串

通过正则表达式提取字符串中的纯数字部分,再转换为数值类型:

Import-Csv 'C:\temp\t\xxxx.csv' | Where-Object {
    # 移除所有非数字字符,转为整数
    $utilValue = [int]($_.utilization -replace '[^\d]', '')
    $utilValue -gt 80
}

如果数值包含小数(如"85.5 %"),可改为转换为double类型适配:

Import-Csv 'C:\temp\t\xxxx.csv' | Where-Object {
    $utilValue = [double]($_.utilization -replace '[^\d.]', '')
    $utilValue -gt 80
}

2. 处理Object数组类型的列

若$_.utilization是数组,可指定访问数组的第一个元素(根据实际数据调整索引):

Import-Csv 'C:\temp\t\xxxx.csv' | Where-Object {
    # 取数组第一个元素,清理后转整数
    $utilStr = $_.utilization[0] -replace '[^\d]', ''
    [int]$utilStr -gt 80
}

同时建议检查CSV文件,确认是否存在重复的utilization列名,避免导入时自动转为数组。

内容的提问来源于stack exchange,提问作者scage007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:11:16