2

我有一个 CSV 文件,它使用不同的引号和文本分隔符,而不是默认值。我知道分隔符有一个不同分隔符的选项,但我不知道如何摆脱引号字符。

Import-Csv 'C:\test.txt' -Delimiter "(character U+0014 is used here, won't show here)"

但是引号字符是 U+00FE,我也需要删除它,这样我才能得到没有任何特殊字符的文本。我不想把它写到一个新文件中。我想将 csv 导入一个变量,以便对其进行一些分析。例如查看字段是否为空。

有任何想法吗?

4

1 回答 1

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)", '"'
于 2012-09-05T14:09:57.963 回答