我有一个CSV文件,其内容如下:
TYPE VALUE Quote This is the first quote Quote This is the first quote! Quote This is the first quote? Quote Short quote Quote Short quote! Quote This a significantly longer third quote Quote This a significantly longer third quote.
我试图弄清楚如何识别报价的第一个唯一实例并删除重复项。重复字符串末尾的多余字符是已知的,但是字符串的长度可能从几个字符到40个以上不等。
答案 0 :(得分:0)
如果您只想忽略标点符号来确定唯一值,则可以按自定义属性对记录进行分组,然后按以下方式处理组:
Import-Csv 'C:\path\to\input.csv' |
Group-Object { $_.VALUE -replace '[\.!\?]+$' } |
ForEach-Object {
$_.Group |
Sort-Object Length -Descending |
Select-Object -Last 1
}
或者,将原来的VALUE
属性替换为计算所得的属性,然后选择唯一记录:
Import-Csv 'C:\path\to\input.csv' |
Select-Object TYPE, @{n='VALUE';e={$_.VALUE -replace '[\.!\?]+$'} -Unique
要从每个值的末尾删除任何标点符号,还可以使用转义序列\p{P}
代替字符类[\.!\?]
,如Theo在评论中所述。