Question
Split fichier text
- Helfer Florian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Le soucis justement, c'est que je dois faire ce traitement uniquement pas PS... Je dois aller récupérer des données spécifiques pour une ligne spécifique en PS, sans passer par XL.
C'est pour ça que je me demandais si, comme pour XL, il y moyen d'ajouter un \"identificateur de texte\" ou une autre solution... Car dans XL lorsqu'on importe le fichier on peut lui donner un séparateur et justement cet identificateur de texte!<br><br>Message édité par: florian.helfer, à: 22/01/14 12:46
Connexion ou Créer un compte pour participer à la conversation.
- Helfer Florian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
[code:1]$reader = [System.IO.File]::OpenText(\"cheminVersExemple.txt\"«»)
$reader.ReadLine() > $null
try {
while (($line = $reader.ReadLine()) -ne $null) {
$data = $line.split(\":\"«»)
Foreach($cells in $data){
if($cells -eq \"\"«»){
$cells = \"$\"
$cells
}else{
$cells
}
}
}
}
finally {
$reader.Close()
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Une information importante qui nous manque...J'ai aussi fais cette procédure de passer par XL d'abord et d'enregistrer ensuite en txt et je suis d'accord que cela fonctionne!
florian.helfer écrit:
Oui, ça j'ai bien comprisLe soucis justement, c'est que je dois faire ce traitement uniquement pas PS
florian.helfer écrit:
Je n'ai pas compris.C'est pour ça que je me demandais si, comme pour XL, il y moyen d'ajouter un \"identificateur de texte\" ou une autre solution... Car dans XL lorsqu'on importe le fichier on peut lui donner un séparateur et justement cet identificateur de texte!
Il faut déjà savoir transformer ton fichier pour l'utiliser avec la v2, si tu as la v3, il faut 'juste' transformer les simple guillemets.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Helfer Florian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Laurent Dardenne écrit:
Une information importante qui nous manque...florian.helfer écrit:
J'ai aussi fais cette procédure de passer par XL d'abord et d'enregistrer ensuite en txt et je suis d'accord que cela fonctionne!
Désolé... j'ai vraiment pas pensé à précisé cela..
Je suis en V2 mais j'ai quand même essayer avec les \"vrai\" guillemets
Voilà le code avec le changement de guillemets, mais toujours même problème... :/
[code:1]
$reader = [System.IO.File]::OpenText(\"cheminExemplt.txt\"«»)
$reader.ReadLine() > $null
try {
while (($line = $reader.ReadLine()) -ne $null) {
$lineReplace = $line.Replace(\"'\",'\"')
$data = $lineReplace.split(\":\"«»)
Foreach($cells in $data){
if($cells -eq \"\"«»){
$cells = \"$\"
$cells
}else{
$cells
}
}
}
}finally {
$reader.Close()
}[/code:1]
Je dois faire comment donc pour le transformer correctement?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
[code:1]#fichier d'origine
$Lines=Get-Content 'c:\temp\ExemplePrn-0.txt' -Encoding UTF8
$Lines[0]=$Lines[0] -replace ':$',''
$New=$Lines|% { $_.Replace(\"'\",'\"') }
#Fichier reformaté
$New|Set-Content 'c:\temp\ExemplePrn-1.txt' -Encoding UTF8
Import-csv 'c:\temp\ExemplePrn-1.txt' -Delimiter ':'[/code:1]
Un truc qui tombe en marche :
[code:1]
$s=\"'e' a 'e'. c'est d'un j'ai l'être m'appelle, n'est-ce pas s'assurer? T'as s'y 'guillemets'? S'arrimer: réel.:'blablabla'::'none'::'trucs':'asdfsdf':'1s'\"
#negative lookbehind, (?<!()\)', recherche les apostrophes qui ne sont pas précédées par un caractère d'élision.
#negative lookahead, '(?!()) permet de trouver une apostrophe qui n'est pas suivie par un caractère déclenchant l'élision.
$s -replace \"(?<!(c|d|j|l|m|n|s|t))'\",'\"' -replace \"'(?!(a|e|i|o|u|y|ê|ë|î|ï|ô))\",'\"'
[/code:1]
Un pis-aller, avant de trouver le Saint-Graal...<br><br>Message édité par: Laurent Dardenne, à: 23/01/14 10:34
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Helfer Florian
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Bon maintenant plus qu'à trouver comment stopper le split(\":\") lorsque je suis dans un texte \"\"...!!!!!!
PS: Je pense qu'il faut encore ajouter un champ à ton exemple pour mon cas('09:35:00'):
[code:1]$s=\"'e' a 'e'. c'est d'un j'ai l'être m'appelle, n'est-ce pas s'assurer? T'as s'y 'guillemets'? S'
arrimer: réel.:'blablabla'::'none':'09:35:00':'trucs':'asdfsdf':'1s'\"
#negative lookbehind, (?<!()\)', recherche les apostrophes qui ne sont pas précédées par un
caractère d'élision.
#negative lookahead, '(?!()) permet de trouver une apostrophe qui n'est pas suivie par un caractère
déclenchant l'élision.
$s -replace \"(?<!(c|d|j|l|m|n|s|t))'\",'\"' -replace \"'(?!(a|e|i|o|u|y|ê|ë|î|ï|ô))\",'\"'[/code:1]
Message édité par: florian.helfer, à: 23/01/14 09:06<br><br>Message édité par: florian.helfer, à: 23/01/14 10:38
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Split fichier text