ConvertTo-Csv Ausgabe ohne Anführungszeichen

8

Ich verwende ConvertTo-Csv , um eine kommagetrennte Ausgabe zu erhalten

%Vor%

Es gibt aus wie:

%Vor%

Ich möchte jedoch ohne Anführungszeichen ausgegeben werden, wie

%Vor%     
Mohammad Nadeem 06.06.2014, 04:33
quelle

6 Antworten

11

Hier können Sie die Anführungszeichen entfernen

%Vor%

Aber es hat einen schwerwiegenden Nachteil, wenn einer der Artikel einen " enthält, der entfernt wird!

    
JPBlanc 06.06.2014, 04:53
quelle
2

Ich habe heute an einem Tisch gearbeitet und über diese Frage nachgedacht, als ich die CSV-Datei im Notizblock vorhergesehen habe und entschieden habe, was andere gemacht haben. Es scheint, dass viele die Lösung überkompensiert haben.
Im Folgenden finden Sie eine einfache Möglichkeit, die Anführungszeichen aus einer CSV-Datei zu entfernen, die mit dem Export-Csv-Cmdlet in PowerShell erstellt wurde.

Erstellen Sie eine TEST.csv-Datei mit den folgenden Daten.

"ID", "Name", "Staat"
"5", "Stephanie", "Arizona"
"4", "Melanie", "Oregon"
"2", "Katie", "Texas"
"8", "Steve", "Idaho"
"9", "Dolly", "Tennessee"

Speichern unter: TEST.csv

Speichern von Dateiinhalten in einer $ Test-Variablen
$ Test = Get-Content. \ TEST.csv

Laden Sie die Variable $ Test, um die Ergebnisse des Cmdlets Get-Content anzuzeigen $ Test

Laden Sie die $ Test-Variable erneut und ersetzen Sie alle (",") durch ein Komma, trimmen Sie dann den Anfang und das Ende, indem Sie jedes Anführungszeichen entfernen
$ Test.Replace ('","', ","). TrimStart ('"'). TrimEnd ('"')

Speichern / Ersetzen der Datei TEST.csv
$ Test.Replace ('","', ","). TrimStart ('"'). TrimEnd ('"') | Out-File. \ TEST.csv -Force -Bestätigen: $ false

Neue Datei testen Ausgabe mit Import-Csv und Get-Content:
Import-Csv. \ TEST.csv
Get-Content. \ TEST.csv

Um das Ganze zusammenzufassen, kann die Arbeit mit zwei Zeilen Code gemacht werden
$ Test = Get-Content. \ TEST.csv
$ Test.Replace ('","', ","). TrimStart ('"'). TrimEnd ('"') | Out-File. \ TEST.csv -Force -Bestätigen: $ false

    
Fred 13.02.2018 21:36
quelle
1

Dies ist der angenommenen Antwort ziemlich ähnlich, aber es hilft, die unerwünschte Entfernung von "echten" Anführungszeichen zu verhindern.

%Vor%

Dies wird Folgendes tun:

  • Entfernen Sie Anführungszeichen, die eine Zeile beginnen
  • Entfernen Sie Anführungszeichen, die eine Zeile beenden
  • Ersetzen Sie Anführungszeichen, die ein Trennzeichen mit dem Trennzeichen umschließen.

Daher würde der einzige Weg, der schiefgehen würde, darin bestehen, dass einer der Werte tatsächlich nicht nur Anführungszeichen enthält, sondern speziell eine Anführungszeichen-Anführungszeichenfolge, die hoffentlich ziemlich ungewöhnlich sein sollte.

    
bwerks 22.04.2016 18:18
quelle
1

Ich bin auf dieses Problem gestoßen, habe diese Frage gefunden, war aber nicht mit den Antworten zufrieden, weil sie alle zu leiden scheinen, wenn die von Ihnen verwendeten Daten ein Trennzeichen enthalten, das in Anführungszeichen gesetzt werden sollte. Die unnötigen doppelten Anführungsstriche zu entfernen ist eine gute Sache.

Die folgende Lösung scheint dieses Problem für einen allgemeinen Fall und für alle Varianten zu lösen, die Probleme verursachen könnten.

Ich habe diese Antwort woanders gefunden, Entfernen von Anführungszeichen aus CSV-Dateien, die von PowerShell erstellt wurden und zum Codieren einer Beispielantwort für die SO-Community verwendet haben.

Namensnennung: Kredit für die Regex, geht zu 100% an Russ Loski.

Code in einer Funktion, Remove-DoubleQuotesFromCsv

%Vor%

Testcode

%Vor%

Testausgabe

%Vor%     
Kory Gill 22.09.2016 19:39
quelle
0

Ich habe nicht lange nach der Entfernung der Zitate gesucht. Aber hier ist ein Workaround.

%Vor%

Dies ist eine schnelle Problemumgehung und es gibt möglicherweise einen besseren Weg, dies zu tun.

    
ravikanth 06.06.2014 04:49
quelle
0

Ich fand, dass Korys Antwort nicht für den Fall funktionierte, wo die ursprüngliche Zeichenkette mehr als ein leeres Feld in einer Reihe enthielt. I.e. "ABC" ,, "0" war in Ordnung, aber "ABC" ,,, "0" wurde nicht richtig behandelt. Es hörte auf, Zitate nach dem ",,, zu ersetzen. Ich habe es behoben, indem ich " |(?<output>) " nahe dem Ende des ersten Parameters wie folgt hinzugefügt habe:

%Vor%     
kproth 02.02.2018 05:27
quelle

Tags und Links