2013-10-29 56 views
0

對於第1部分,見this SO post剝離多餘的文本限定符 - 第2部分

我有一個CSV具有由"符號作爲TEXTQUALIFIER分離某些字段。

查看下面的例子。請注意,每個整數(例如1,2,3等)應該是一個字符串。合格的字符串被"符號包圍。

1,2,3,"qualifiedString1",4,5,6,7,8,9,10,11,12,13,14,15,16,"qualifiedString2""

通知最後合格的字符串如何有"符號作爲字符串的一部分。

User @ 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的清洗,以消除冗餘"預選賽?

回答

1

你只需要一個不同的正則表達式:

(get-content file.txt -ReadCount 0) -replace '(?<!,)"(?!,|$)',''| 
set-content newfile.txt 

其中一個將取代任何雙引號不立即用逗號preceeded,或後跟一個逗號或行的末尾。

$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" 
+0

非常感謝! –