Question CSV et Remplacement de caractères

Plus d'informations
il y a 12 ans 4 mois #16297 par Dionne Sylvain
Bonjour, j'ai fait pas mal de recherche et j'avoue ne pas avoir trouvé de réponse à mon problème et comme je connais l'existence de PowerShell seulement depuis peu, je ne comprends pas la syntaxe de la fonction REPLACE.

J'ai un fichier CSV de ce format:
Code;Nom;Div;Date;Titre
123;\"Jos\";1;\"2013/10/02\";\"Le Projet\"
254;\"Bill\";2;\"2013/10/25\";\"CONDOS \"\"M\"\"\"
214;\"Bob\";1;\"2013/10/02\";\"WANNALANCIT \"\"1ST\"\" FLOOR\"
145;\"Ben\";2;\"2013/10/15\";\"PSC 1/4\"\" EDDY\"
458;\"Pierre\";1;\"2013/10/12\";\"\"

Je souhaite effacer les doubles guillemets, mais seulement ceux qui se trouve à l’intérieur de guillemets.
Exemple:\"WANNALANCIT \"\"1ST\"\" FLOOR\"
Devient: \"WANNALANCIT 1ST FLOOR\"
Par contre: 458;\"Pierre\";1;\"2013/10/12\";\"\"
Reste tel quel, donc les \"\" à la fin ne sont pas effacer.

Donc mon résultat final souhaité sera:
123;\"Jos\";1;\"2013/10/02\";\"Le Projet\"
254;\"Bill\";2;\"2013/10/25\";\"CONDOS M\"
214;\"Bob\";1;\"2013/10/02\";\"WANNALANCIT 1ST FLOOR\"
145;\"Ben\";2;\"2013/10/15\";\"PSC 1/4 EDDY\"
458;\"Pierre\";1;\"2013/10/12\";\"\"

Merci de votre aide.

SDionne

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16299 par Laurent Dardenne
Salut,
si tu importes tes données, le traitement est simplifié :
[code:1]
@\"
Code;Nom;Div;Date;Titre
123;\"Jos\";1;\"2013/10/02\";\"Le Projet\"
254;\"Bill\";2;\"2013/10/25\";\"CONDOS \"\"M\"\"\"
214;\"Bob\";1;\"2013/10/02\";\"WANNALANCIT \"\"1ST\"\" FLOOR\"
145;\"Ben\";2;\"2013/10/15\";\"PSC 1/4\"\" EDDY\"
458;\"Pierre\";1;\"2013/10/12\";\"\"
\"@ > c:\temp\datas.csv

Import-csv c:\temp\datas.csv -Delimiter \";\" |
Foreach {$_.Titre=$_.Titre -replace '\"','';$_}|
Export-csv c:\temp\datas2.csv -Delimiter \";\"

type c:\temp\datas2.csv
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16300 par Philippe
salut sdionne

le debut de ta solution :
[code:1]$t = Import-Csv \"c:\test.csv\" -Delimiter \";\"
$t
$t | foreach {$_.Titre = $_.Titre.replace('\"','')}
$t[/code:1]
explication :
tu importe ton fichier CSV comme un objet; les objets sont plus simple a gere (en particulier dans ce cas ca aide)
lors de l'import les guillemets de debut et fin de chaine sont enlevé automatiquement
il suffit donc apres pour chaque ligne, d'enlever tous les guillemets des titres
tu peut exporter ton tableau ou travailler directement avec
si les nom doit aussi contenir des guillemets tu peut faire la meme manip, ex:
[code:1]$t | foreach {
$_.Titre = $_.Titre.replace('\"','')
$_.Titre = $_.Nom.replace('\"','')
}
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16302 par Philippe
bonjour Laurent

et encore un doublon
deux réponse c'est mieux qu'aucune ;)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16303 par Laurent Dardenne
Bonjour 6ratgus
6ratgus écrit:

deux réponse c'est mieux qu'aucune

La tienne est mieux documentée.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16304 par Dionne Sylvain
Bonjour à vous 2, ça fonctionne en partie, je m'explique, la manipulation enlève bien les \"\", mais ajoute des \" à ma première ligne de nom de champs.

Avant: Code;Nom;Div;Date;Titre
Après: \"Code\";\"Nom\";\"Div\";\"Date\";\"Titre\"

En plus ça ajoute une première ligne:

#TYPE System.Management.Automation.PSCustomObject

Donc voici le résultat que j'obtiens:
#TYPE System.Management.Automation.PSCustomObject
\"Code\";\"Nom\";\"Div\";\"Date\";\"Titre\"
\"123\";\"Jos\";\"1\";\"2013/10/02\";\"Le Projet\"
\"254\";\"Bill\";\"2\";\"2013/10/25\";\"CONDOS M\"
\"214\";\"Bob\";\"1\";\"2013/10/02\";\"WANNALANCIT 1ST FLOOR\"
\"145\";\"Ben\";\"2\";\"2013/10/15\";\"PSC 1/4 EDDY\"
\"458\";\"Pierre\";\"1\";\"2013/10/12\";\"\"

Et ce que je voudrais obtenir:
Code;Nom;Div;Date;Titre
\"123\";\"Jos\";\"1\";\"2013/10/02\";\"Le Projet\"
\"254\";\"Bill\";\"2\";\"2013/10/25\";\"CONDOS M\"
\"214\";\"Bob\";\"1\";\"2013/10/02\";\"WANNALANCIT 1ST FLOOR\"
\"145\";\"Ben\";\"2\";\"2013/10/15\";\"PSC 1/4 EDDY\"
\"458\";\"Pierre\";\"1\";\"2013/10/12\";\"\"

Merci
SDionne

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.052 secondes
Propulsé par Kunena