【发布时间】:2017-11-02 15:38:36
【问题描述】:
我正在尝试从管道分隔文件的第 15 列和第 16 列中删除空格。
我在网上搜索后尝试了这篇文章底部的代码,但它失败了
您不能在空值表达式上调用方法。在线:19 字符:2 + $.h15=$.h15.ToString().Replace(' ','') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
和
您不能在空值表达式上调用方法。在线:20 字符:5 + $.h16=$.h16.ToString().Replace(' ','') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNul
我从那猜想,它没有读入数据,但我不明白为什么不读。我检查了变量,它们是正确的。
$header = 1..42 | ForEach-Object { "h$_" }
$dialler_out_path="$dialler_file_dir\$output_file"
$dialler_path="$dialler_file_dir\$dialler_file"
(Import-Csv -Delimiter '|' -Header $header -Path $dialler_path | %{
$_.h15=$_.h15.ToString().Replace(' ','')
$_.h16=$_.h16.ToString().Replace(' ','')
}) | export-csv $dialler_out_path -NoType
【问题讨论】:
-
问题似乎是您试图对空对象执行 ToString,而是尝试执行处理空值的 Convert.ToString
-
试试:
(Import-Csv -Delimiter '|' -Header $header -Path $dialler_path | ? {$_} | %{... -
这仍然给出空值异常。我刚刚添加了一个额外的管道和代码? {$_} 如上所述,但仍然出错。不幸的是,我无法发布任何示例数据来提供帮助,因为它很敏感
标签: powershell csv import-csv