[R] Split Intelligent !

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

[R] Split Intelligent !

#1

Message par locos974 »

Bonjour,

Aujourd'hui je suis confronter a un problème de Split, pas la fonction mais pour découpé un texte spéciale.
Je veux séparé ceci :
500, 1000, [[968, 1], [948, 5]], [11, 10], [27, 47], [453, 3, 437]
De façon a l'avoir en morceaux comme ça :
500
1000
[[968, 1], [948, 5]]
[11, 10]
[27, 47]
[453, 3, 437]

Merci d'avance. Locos974.
Modifié en dernier par locos974 le ven. 28 juin 2013 20:24, modifié 1 fois.
Cordialement Locos974.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Split Intelligent !

#2

Message par DimVar »

Je t'aurais bien proposé d'utiliser la famille split mais le chat vert risque de passer ici avec une solution bien plus simple :mrgreen:
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Split Intelligent !

#3

Message par jguinch »

Salut.
Avant que le chat vert ne pointe son museau, voilà une possibilité :

Code : Tout sélectionner

#Include <Array.au3>
$line = "500, 1000, [[968, 1], [948, 5]], [11, 10], [27, 47], [453, 3, 437]"
$split = StringRegExp( $line, "\A(\d+),\s*(\d+),\s*(\[\[.*\]\]),\s*(\[.*?\]),\s*(\[.*?\]),\s*(\[.*?\])" , 1)
_ArrayDisplay($split)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Split Intelligent !

#4

Message par locos974 »

Le problème reste que la ligne change ( 740 lignes comme celle-ci différente :/ ). J'ai oublié de le préciser..
C'est à dire que des fois elle peut être comme je l'ai donné et elle peut être :
1200, null, null, null, null, null
Ou :
null, 500, null, null, null, null
Les 2 premiers sont des chiffres entiers.
Les 4 derniers sont des groupes dont le 1er :
[[x,y], [z,w], ..]
Et les 3 derniers, comme ceci :
[x,y,z,w,..]
Donc ce qui nous donne un truc aléatoire avec :
chiffre, chiffre, [[x,y], [z,w], ..], [x,y,z,w,..], [x,y,z,w,..], [x,y,z,w,..]
Quand il n'y a rien, cela vaux null.
Cordialement Locos974.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Split Intelligent !

#5

Message par jguinch »

OK, alors essayes avec ça :

Code : Tout sélectionner

#Include <Array.au3>
$line = "500, 1000, [ [968, 1], [948, 5], [122,2]  ], [11, 10], [27, 47], [453, 3, 437]"
$split = StringRegExp( $line, "\A(\d*|null)\s*,\s*(\d*|null)\s*,\s*(\[\s*\[.*\]\s*\]|null)\s*,\s*(\[.*?\]|null)\s*,\s*(\[.*?\]|null)\s*,\s*(\[.*?\]|null)" , 1)
_ArrayDisplay($split)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

Re: [..] Split Intelligent !

#6

Message par locos974 »

Je ne saurais pas comment vous remerciez ! La chose qui me sera très utile qui me manquait en Autoit niveau tâche rapide ! Merci bien !
Cordialement Locos974.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Split Intelligent !

#7

Message par mikell »

@jguinch
Quand même un peu optimisable :mrgreen:

Code : Tout sélectionner

#Include <Array.au3>
$line = "null, 1000, [ [968, 1], [948, 5], [122,2]  ], [11, 10, null], [27, 47, ], [453, 3, 437]"
$split = StringRegExp(StringStripWS($line, 8), '(.*),(.*),(\[\[.*\]\]),(\[.*\]),(\[.*\]),(\[.*\])', 1)
_ArrayDisplay($split)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Split Intelligent !

#8

Message par jguinch »

@mikell : ah oui là c'est optimisé :oops:
J'avais utilisé (\d*|null) pour ne pas traiter les lignes qui contiendraient des mauvaises valeurs dans les 2 premiers champs (je pense toujours aux cas tordus.... ) :mrgreen:
A+
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Split Intelligent !

#9

Message par mikell »

C'est pas faux ... mais
DimVar a écrit : le chat vert risque de passer ici
jguinch a écrit :Avant que le chat vert ne pointe son museau
je ne pouvais PAS ne pas répondre :mrgreen:

AMHA une 'mauvaise' valeur dans un champ peut être récupérée quand même à fin d'analyse, le script se contentant de classer le contenu des champs et le tri des données récupérées étant fait secondairement avec une gestion d'erreur adaptée
M'enfin bon on sort un brin du sujet là :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre