从 CSV 导入列并替换逗号

Posted

技术标签:

【中文标题】从 CSV 导入列并替换逗号【英文标题】:Import Column from CSV and replace comma 【发布时间】: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,因为你怎么在逗号分隔的文件中有逗号的名字?啊,所以他们在引号中,你可以编写正则表达式来捕获它 【参考方案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 ',', ''

希望对你有帮助

【讨论】:

对不起,这不是删除逗号。 是吗..您能在某处分享您的文件吗?我想看看

以上是关于从 CSV 导入列并替换逗号的主要内容,如果未能解决你的问题,请参考以下文章

导出hive数据,用逗号分割

Powershell 替换 csv 对象

几个CSV大文件如何导入mysql数据库,并更新替换对应数据?

从csv文件导入python时如何替换数字

hive导入csv文件,字段中双引号内有逗号

VBA - 替换CSV中的逗号不在引号内