我有一个 CSV 文件,使用不同的引号和文本分隔符而不是默认字符。我知道对于分隔符,有一个不同分隔符的选项,但我无法找到如何摆脱引号字符。
Import-Csv 'C:\test.txt' -Delimiter "(character U+0014 is used here, won't show here)"
但是引号字符是 U+00FE,我也需要删除它,这样我才能得到没有任何特殊字符的文本。我不想把它写到一个新文件中。我想将 csv 导入一个变量,这样我就可以对其进行一些分析。例如,查看某个字段是否为空。
有什么想法吗?
最佳答案
分隔符实际上不是问题,因为您可以用
-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)", '"'
关于windows - 在 powershell 中使用不同的分隔符和引号导入 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12283123/