我有一个CSV文件,使用不同于默认值的不同引号和文本分隔符。我知道分隔符有一个不同分隔符的选项,但我找不到如何摆脱引号字符。
Import-Csv 'C:\test.txt' -Delimiter "(character U+0014 is used here, won't show here)"
但是引号字符是U + 00FE,我需要删除它,所以我可以得到没有任何特殊字符的文本。我不想把它写到一个新文件。我想将csv导入变量,因此我可以对其进行一些分析。例如,查看字段是否为空。
有什么想法吗?
答案 0 :(得分:6)
分隔符实际上不是问题,因为您可以使用
执行此操作-Delimiter "$([char]0x14)"
至于引号,您可以使用预处理步骤,然后使用ConvertFrom-
代替Import-CSV
:
Get-Content test.txt |
ForEach-Object { $_ -replace ([char]0xFE) } | # to remove the “quotes”
ConvertFrom-CSV -Delimiter "$([char]0x14)"
如果你的行包含嵌入式引号,那么它需要更多的工作,并且可能更容易强制引用每个字段:
$14 = "$([char]0x14)"
$_ -replace ([char]0xFE) -replace '"', '""' -replace "(?<=^|$14)|(?=`$|$14)", '"'