从 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 导入列并替换逗号的主要内容,如果未能解决你的问题,请参考以下文章