有关第1部分,请参阅this SO post
我有一个CSV,其某些字段由"
符号分隔为TextQualifier。
见下面的例子。请注意,每个整数(例如1,2,3等)都应该是一个字符串。限定字符串由"
符号包围。
1,2,3,"qualifiedString1",4,5,6,7,8,9,10,11,12,13,14,15,16,"qualifiedString2""
注意最后一个限定字符串如何将"
符号作为字符串的一部分。
用户@mjolinor建议使用这个powershell脚本,它可以修复上面的场景,但它不能修复下面的“第2部分”场景。
(get-content file.txt -ReadCount 0) -replace '([^,]")"','$1' |
set-content newfile.txt
以下是问题的第2部分。我需要一个解决方案:
额外的"
符号可以随机出现在字符串中。这是另一个例子:
1,2,3,"qualifiedString1",4,5,6,7,8,9,10,11,12,13,14,15,16,"qualifiedS"tring2"
您能否建议一种优雅的方式来自动清理CSV以消除多余的"
限定符?
答案 0 :(得分:1)
你只需要一个不同的正则表达式:
(get-content file.txt -ReadCount 0) -replace '(?<!,)"(?!,|$)',''|
set-content newfile.txt
那个将替换任何不会立即以逗号开头的双引号,或者后跟逗号或行尾的双引号。
$text = '1,2,3,"qualifiedString1",4,5,6,7,8,9,10,11,12,13,14,15,16,"qualifiedS"tring2"'
$text -replace '(?<!,)"(?!,|$)',''
1,2,3,"qualifiedString1",4,5,6,7,8,9,10,11,12,13,14,15,16,"qualifiedString2"