我的csv文件包含百分比值 百分号(yuck)。我想拉出%&并且将值乘以0.01,这样我就可以将它存储为正确的小数。
起初我以为我将其拆分并分两步完成:
但那不必要的复杂,对吧?这让我在开始时没有百分比值的情况下遇到麻烦,但在删除%&#39之后看起来就像它们一样(开始像正则表达式一样思考)。我确定可以在一个正则表达式替换中执行此操作。
我困惑了一个正则表达式来找到这些值,但是现在我试图用我的替换价值做数学运算并且我在使用$ 1时遇到了麻烦。我似乎无法将它乘以0.01。我尝试了一堆括号和[十进制]声明,但无法使它工作。
现有文件的示例:
1.9500%, 123.23, 0.0123%, "textvalue", 2.1450%, 2.89
所需文件的示例(删除百分号并完成数学运算)。为清晰起见,包含了前导/尾随零,但我在技术上并不需要它们:
0.019500, 123.23, 0.000123, "textvalue", 0.021450, 2.89
这是我的代码:
$Files = Get-ChildItem *input.csv
foreach ($file in $Files)
{
$file |
Get-Content | #assume that I can't use -raw
% {$_ -replace '(\d+\.\d+)%', ("`$1" * 0.01)} | #THIS is my problem
out-file output.csv -append -encoding ascii
}