【发布时间】:2016-06-27 17:38:48
【问题描述】:
我在尝试从一组文件中的某些货币值中提取千位分隔符时遇到了问题。 “坏”值用逗号和双引号分隔。那里还有其他价值小于 1000 美元的值。
现有文件示例:
"12,345.67",12.34,"123,456.78",1.00,"123,456,789.12"
desired 文件示例(删除了数千个分隔符):
"12345.67",12.34,"123456.78",1.00,"123456789.12"
我找到了一个用于将数字与分隔符匹配的正则表达式,效果很好,但我在使用 -replace 运算符时遇到了问题。重置价值让我感到困惑。我读到了 $& ,我想知道我是否应该在这里使用它。我尝试了 $_,但这会拉出我所有的逗号。我必须以某种方式使用 $matches 吗?
这是我的代码:
$Files = Get-ChildItem *input.csv
foreach ($file in $Files)
{
$file |
Get-Content | #assume that I can't use -raw
% {$_ -replace '"[\d]{1,3}(,[\d]{3})*(\.[\d]+)?"', ("$&" -replace ',','')} | #this is my problem
out-file output.csv -append -encoding ascii
}
【问题讨论】:
-
使用 import-csv 然后您可以遍历行和项目,从每个项目中删除逗号,同时构建新行,然后将新行保存到文件中覆盖它。
标签: regex powershell