【发布时间】:2021-05-11 01:34:01
【问题描述】:
我有一个 CSV 文件,其中一些单元格中有一个空格,而其他单元格只是空的。如果我跑
" " -eq ""
它返回 False,因此 Powershell 本身可以理解空格和空字符串之间的区别。但是,我有一个包含以下内容的 CSV 文件:
Header0,Header1,Header2,Header3
FillerData, ,,FillerData
当我导入并比较它时,我得到以下信息:
PS C:\> $MyCSV = Import-Csv -Path "C:\MyCSV.csv"
PS C:\> $MyCSV.Header1 -eq " "
False
PS C:\> $MyCSV.Header1 -eq ""
True
PS C:\> $MyCSV.Header2 -eq " "
False
PS C:\> $MyCSV.Header2 -eq ""
True
因此,当它们不相等时,Import-Csv 默认将带有空格的 CSV 条目视为等于空字符串。我真的需要为我的用例导入空格。有什么方法可以让 Import-Csv 正确导入空格而不是将它们视为空字符串?
【问题讨论】:
-
您能否在此处将 csv 的某些行(包括标题)作为纯文本包含在内?
-
我添加了一个带有一些填充数据的示例,以显示空格和空字符串之间的区别。
-
如果您控制 csv 的生成过程,请将有意义的空格用引号括起来 - 例如,请参阅 ConvertTo-Csv 的输出:
(new-object pscustomobject -property ([ordered] @{"Header0"="FillerData";"Header1"=" ";"Header2"=$null;"Header3"="FillerData"})) | convertto-csv给出"Header0","Header1","Header2","Header3" "FillerData"," ",,"FillerData"- 请注意" "为 Header1 的值. -
如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。
-
当然,我认为 >95% 的问题都有可接受的答案。但是,我首先需要验证它是否确实有效。现在,尝试这个我遇到了一个问题,即添加引号会使 Import-Csv 逐字导入它们。
标签: powershell csv