【问题标题】:Import Column from CSV and replace comma从 CSV 导入列并替换逗号
【发布时间】:2016-12-09 14:26:41
【问题描述】:

我有一个包含数据的 CSV。

例子:

用户名、sid、对象类、名称
Jsmith,3513144,用户,“史密斯,约翰”
罗杰斯,1234456,用户,“罗杰斯先生”
Hsimpson,122345,User,"Hommer, Simpson"

我正在尝试删除名称中的逗号。我在替换和导出时遇到了麻烦,因为我需要其他两列中的数据与之一起出现。我可以只导出名称列没问题,但不知道如何在同一个 CSV 中获取用户 ID 和 SID。有谁知道如何做到这一点?

【问题讨论】:

  • 请显示您的 CSV 文件的实际内容(使用文本编辑器打开,复制和粘贴)。您可能会混淆这些值,但我们需要查看实际结构。
  • 好吧,你甚至不需要导入csv,只需将逗号替换为空格
  • 这里是 CSV 用户 ID 的示例,sid,objectclass,Name Jsmith,3513144,user,"Smith, John" Mrodgers,1234456,User,"Rodgers, Mr" Hsimpson,122345,User, “霍默,辛普森”
  • 但是如果我替换 CSV 中的 ,​​ 会不会混淆它是 CSV 的概念,或者 -Replace 只会替换 CSV 中包含的值中的逗号?
  • 哦,我在想这不是逗号分隔的 csv,因为你怎么在逗号分隔的文件中有逗号的名字?啊,所以他们在引号中,你可以编写正则表达式来捕获它

标签: powershell csv replace comma


【解决方案1】:

导入 CSV,从字段 Name 中删除逗号,然后将数据导出回您的 CSV:

$csv = 'C:\path\to\your.csv'

(Import-Csv $csv) | ForEach-Object {
    $_.Name = $_.Name -replace ','
    $_  # echo modified object back to pipeline
} | Export-Csv $csv -NoType

【讨论】:

  • 为什么不用正则表达式解析?这个在性能上很糟糕
  • @4c74356b41 因为它不容易出错,而且性能很可能足够好。过早的优化是万恶之源。
  • 这只是为我做的,但如果你能给我一个更好的例子,我会使用它。谢谢好心的先生。
  • @doobis 如果这对您有帮助,您应该将其标记为答案
【解决方案2】:

这应该可以完成您的工作。之后,您可以根据需要导出

$Import= Import-Csv E:\BookName.csv
$Import -replace ',', ''

希望对你有帮助

【讨论】:

  • 对不起,这不是删除逗号。
  • 是吗..您能在某处分享您的文件吗?我想看看
猜你喜欢
  • 2016-09-23
  • 2013-08-26
  • 2011-02-26
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多