【问题标题】:Replacing empty values in a CSV using powershell?使用powershell替换CSV中的空值?
【发布时间】:2014-02-26 16:54:06
【问题描述】:

我面临着挑战,而且我是开发新手(但长期担任系统管理员)。

基本上我有一个包含一些空字段的 CSV(很多 CSV,但我想从 1 开始)。

我希望我可以使用 powershell 加载 csv,然后进行查找和替换,然后使用以下代码输出文件....但是我不能指定零长度字符串。 (出于显而易见的原因,我想你不能搜索任何东西)......

PS C:\Users\Administrator> [io.file]::readalltext("C:\BainesWingData.CSV").replace("","TEST") | Out-File c:\result.
csv -Encoding ascii -Force

我要做的就是用“0”替换空字段。这是 CSV 的示例。空白字段的位置可能会有所不同。

Timestamp,Baines Wing - 0006.B0006 0006 EM03 (kWh),Baines Wing - 0006.B0006 0006 EM04 (kWh),Baines Wing - 0006.B0006 0006 EM05 (kWh),Baines Wing - 0006.B0016 0006 EM01 (kWh)
31/01/2014 20:00,,,,
31/01/2014 20:30,6,8,6,19
31/01/2014 21:00,5,9,6,19
31/01/2014 21:30,5,8,6,20
31/01/2014 22:00,5,8,6,19
31/01/2014 22:30,6,8,5,20
31/01/2014 23:00,5,7,6,19
31/01/2014 23:30,5,8,6,20
01/02/2014 00:00,5,8,5,19
01/02/2014 00:30,5,8,6,20
01/02/2014 01:00,5,8,6,19
01/02/2014 19:00,5,7,7,19
01/02/2014 19:30,,,,20
01/02/2014 20:00,,,,

如您所见,某些行有一些空字段。这会破坏必须读取这些 CSV 文件的应用程序,所以我的目标是想出一个在这些 CSV 上运行的脚本,以仅用 0 替换空字段。

有人能指点我正确的方向吗?

问候 汤姆

【问题讨论】:

    标签: powershell csv powershell-2.0 powershell-3.0


    【解决方案1】:

    尝试将 ,, 替换为 ,0。

    【讨论】:

    • 对不起,我不明白你的意思? CSV 中的“,,”是我尝试用“0”填充的空字段
    • CSV 文件只是一个文本文件。 ,, 不是一个空字段,它只代表一个,因此您将 ,, 的每个实例替换为 ,0,从而用零填充您的“空”字段。
    【解决方案2】:

    不是很优雅,但这应该可以:

    $csv=Import-Csv .\csv.csv -Header "time","EM03","EM02","EM05", "EM01"  
    $csv | %{
        if($_.EM03 -eq "") {$_.EM03="0"}
        if($_.EM02 -eq "") {$_.EM02="0"}
        if($_.EM05 -eq "") {$_.EM05="0"}
        if($_.EM01 -eq "") {$_.EM01="0"}
    } 
    $csv|export-csv .\new.csv -NoTypeInformation  
    

    【讨论】:

    • 您好!这似乎可行,但是它将所有内容都包含在输出 CSV 上的 "" 引号中,并且似乎还在文件 """,,,, "",,,," 的末尾插入了两个空白行,有什么想法吗?
    • 双引号由 export-csv 生成,如果您不希望这些创建您自己的导出函数。我猜你的源文件中有空行,这就是为什么你有空行
    • 啊,是的,我现在明白了,哦,谢谢你的起点 :-) 我会看看我现在能做些什么,我知道它是可行的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2011-02-21
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多