具有包含多列信息的CSV文件。需要删除"
和Employee Name
中的,
开头和结尾,如下所示。
Employee Name,Employee #,column3, column4 etc. <br>
"Lastname, Firstname",123,abc,xyz<br>
"Lastname, Firstname",123,abc,xyz<br>
结果:
Employee Name,Employee #,column3, column4 etc.<br>
Lastname Firstname,123,abc,xyz<br>
Lastname Firstname,123,abc,xyz<br>
尝试使用以下Powershell脚本:
(gc C:\pathtocsv.csv) | % {$_ -replace '"', ""} | out-file C:\pathtocsv.csv -Fo -En ascii
这只会删除" "
周围的Lastname , Firstname
,但是在文本编辑器中打开csv文件时逗号仍然存在。需要这种格式才能将数据发送到另一家公司。我尝试过的所有内容都删除了每个逗号。 Powershell和其他语言的新手,我相信这很容易解决。请帮忙!
答案 0 :(得分:1)
Powershell对CSV文件具有很多内置处理功能,您可以使用以下内容删除所需的逗号,而不是尝试将其视为文本文件:
Import-Csv .\a.csv | % {
$_."Employee Name" = ($_."Employee Name" -replace ',','')
$_ #return modified rows
} | Export-Csv .\b.csv -notype -delim ','
默认情况下,这将导出所有带有双引号的内容,因此您可能需要返回并运行以下内容:
(gc .\b.csv -raw) -replace '"','' | Out-File .\c.csv
也删除所有双引号。
答案 1 :(得分:1)
警告:如果文本包含特殊字符(即逗号,引号),则引号很重要
如果您确实要删除行,则可以将csv作为常规文本文件进行处理:
#sample data
@'
"Lastname, Firstname",123,abc,xyz
"Lastname, Firstname",123,abc,xyz
'@ | out-file c:\temp\test.csv
Get-Content c:\temp\test.csv | % {
$match = [Regex]::Match($_,'"([^,]*), ([^"]*)"(.*)')
if ($match.Success) {
$match.Groups[1].Value+' '+$match.Groups[2].Value+$match.Groups[3].Value
} else {
$_ #skip processing if line format do not match pattern
}
}