我在处理一些需要清除并加载到数据库的CSV文件时遇到了一个难题。
我对PowerShell相当熟练,但是对正则表达式和csv列操作却不满意。
这是我遇到的问题;我正在使用的CSV文件中有一个“注释”字段,可以包含各种字符。主要问题是我需要删除换行符和字段内的引号,但将常规换行符和文本限定引号保留在应有的位置。我可以删除整个文件中的换行符和引号,但不能专门删除字段中的字符。
我曾尝试使用正则表达式来做到这一点,但是运气并不好,老实说,我并不擅长使用正则表达式。我希望这里的人能够为您提供帮助!
编辑:这是示例数据
"123" "" "2017-02-13 10:26:08" "123456789" "2017-02-10" "No" "Yes" "Yes" "No" "sample text
<crlf> ""additional text""
<crlf>
<crlf> " "Y" <crlf>
这应该只是一行,结尾处没有。
最佳答案
内置的Import-Csv
cmdlet可以正确导入多行和带引号的值。
您的文件以制表符分隔,因此我们将指定"`t"
:
Import-Csv c:\file.csv -Delimiter "`t" | ForEach {
$_.notes = $_.notes -replace '"', '' -replace '[\r\n]+', ' '
$_
} | Export-Csv c:\output.csv -Delimiter "`t" -NoTypeInformation -Encoding UTF8
关于powershell - 替换CSV文件中的引号和特殊字符的一些难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308539/