gpt4 book ai didi

loops - 我无法让 PowerShell 正确转换为 int

转载 作者:行者123 更新时间:2023-12-02 23:05:29 24 4
gpt4 key购买 nike

我目前正在导入 CSV文件中有一列全是数字。我试图将其转换为 int 并且只提取大于 100 的值。我已经手动查看了这个 CSV 文件,并且我可以确认有三行的值大于 100%。但是,这总是返回 0。我做错了什么?

$percentTooLarge = Import-Csv path\file.csv | Foreach-Object { $_.SumHoldingPercent = $_.SumHoldingPercent -as [int]; $_ } | Where-Object { $_.SumHoldingPercent -gt 100 } | Measure-Object
$numPercentTooLarge = $percentTooLarge.Count

最佳答案

由于比较运算符在 PowerShell 中的工作方式,这应该可以解决问题:

$percentTooLarge = Import-Csv path\file.csv | 
Where-Object { 100 -lt $_.SumHoldingPercent} |
Measure-Object

基本上,当您比较事物时,PowerShell 会尝试将右类型转换为左类型。如果你先从 ipcsv 中输入一个值 - 左边将是一个字符串。如果您首先输入数字 - 它会将 CSV 文件中的值转换为数字(它会足够聪明以保持类型足够大;))

我用这段代码测试过:

@"
foo,bar,percent
alfa,beta,120.5
beta,gamma,99.9
foo,bar,30.4
works,cool,120.7
"@ | ConvertFrom-Csv | where { 100 -lt $_.percent }

...结果似乎还不错。

关于loops - 我无法让 PowerShell 正确转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com