【问题标题】:-replace not replacing quotations-replace 不替换引号
【发布时间】:2019-01-21 15:01:29
【问题描述】:

我有一个 CSV 文件,其中随机行包含引号。数据示例为:

示例1:是:否 “示例 2:否:否” “示例 3:是:是” 示例 4:否:是

我已经尝试了一些类似的方法:

$newCsvPath = Get-Content -Path .\allsystems.csv  
$newCsvPath -replace '"',""

但它保留了引号,就好像第二行从未出现过一样。我用错了吗?

【问题讨论】:

  • 您的意思是 allsystems.csv 保留引号,或者您在执行 -replace 时实际上将引号打印到控制台?
  • 运行这两行时,$newCsvPath 包含来自allsystems.csv 的所有相同信息,包括引号。所以它正在打印引号
  • -replace 不会就地替换。您需要将结果分配回变量:$newCsvPath = $newCsvPath -replace '"',""
  • ^解决了,谢谢
  • 从示例 csv 我无法弄清楚为什么有些行有 qoutes 而其他行没有。也许你没有向我们展示足够的东西。无论如何,继续删除 csv 文件中的引号是非常危险的,因为通常它们存在是有充分理由的,即解析器知道引号之间的所有内容属于相同的字段,即使它包含分隔符或换行符。使用 HAL9256 给您的答案,如果需要,使用 Export-Csv 命令将 $newCsvPath 保存到 new 文件中。

标签: powershell csv replace


【解决方案1】:

如果您有一个真正的 CSV 文件,请使用 Import-CSV,而不是使用 Get-Content。它会为你处理所有的引号和一切。

$newCsvPath = Import-CSV -Path .\allsystems.csv  

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2018-09-23
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多