Question
CSV et Remplacement de caractères
- Dionne Sylvain
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 12 ans 4 mois #16297
par Dionne Sylvain
CSV et Remplacement de caractères a été créé 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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 4 mois #16299
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:CSV et Remplacement de caractères
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]
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 12 ans 4 mois #16300
par Philippe
Réponse de Philippe sur le sujet Re:CSV et Remplacement de caractères
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]
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 12 ans 4 mois #16302
par Philippe
Réponse de Philippe sur le sujet Re:CSV et Remplacement de caractères
bonjour Laurent
et encore un doublon
deux réponse c'est mieux qu'aucune
et encore un doublon
deux réponse c'est mieux qu'aucune
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 4 mois #16303
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:CSV et Remplacement de caractères
Bonjour 6ratgus
6ratgus écrit:
6ratgus écrit:
La tienne est mieux documentée.deux réponse c'est mieux qu'aucune
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dionne Sylvain
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 12 ans 4 mois #16304
par Dionne Sylvain
Réponse de Dionne Sylvain sur le sujet Re:CSV et Remplacement de caractères
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
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- CSV et Remplacement de caractères