Page 1 sur 1

Fichier txt ... encore

Posté : 03 sept. 2008 20:53
par winnux
Bonjour me revoici avec une nouvelle question par l'exemple:

*** fichier1.txt ***
laura
guillaume
claude

*** fichier2.txt ***
21
29
45


1 salut laura tu as 21 ans
2 salut guillaume tu as 29 ans
3 salut claude tu as 45 ans

C'es du moins le rendu que j'aimerai, ne connaissant pas par avance le nombre de personne, ni meme les prenoms, il peut y avoir 2 comme comme il peut y avoir 30 prenoms.

Si quelqu'un a une idée :)

Re: Fichier txt ... encore

Posté : 04 sept. 2008 10:12
par Laddy
Bonjour
comment obtiens tu ses informations sur le prénom et l'âge ?

Re: Fichier txt ... encore

Posté : 04 sept. 2008 12:08
par winnux
Tout d'abord merci a toi de te pencher sur mon post.

A la base j'ai un seul fichier.txt qui comprend un texte du genre :

1 laura 21
2 guillaume 29
3 claude 45

J'arrive a isoler chacun des 3 blocs de caracteres, que je fait ressortir dans plusieur fichiers (cause de ma non comprehension avec les for/delim etc).

Il es clair qu'il serais plus pratique (et propre) de n'afficher les infos qu'a partir du fichier principal, mais j'aimerai comprendre comment sont recuperer et traiter les infos.

Disont donc qu'elles ce trouverons donc deja la, lors de l'execution, mais que la ligne 1 du fichier 1, correspond a la ligne 1 du fichier 2 etc etc, je ne sait pas si je me suis correctement expliquer, et si peut aider a faire avancer le schmilblique

Re: Fichier txt ... encore

Posté : 04 sept. 2008 18:12
par winnux
Bon, aprés une journée de recherches, je comprends beaucoup plus de trucs, ca c'es le bon point.
Donc j'ai reussi a faire ce que je desirer (a partir du fichier principal) , mais un autre probleme ce pose :

Je me sert de DELIMS=[] TOKENS=2-3 dans une boucle FOR et grace a DO je renvoi mes variables.Maintenant un exemple de mon probleme :

[1] [nicole] [20] ==> m'affiche correctement "nicole 20"
[2] [richard] [37] ==> m'affiche correctement "richard 37"
:: La le gars utilise :] dans son nom
[3] [:]clement] [37] ==> Et paf dans ma dent, sa m'affiche : : clement

Bref ne pouvant pas empecher les gens de s'appeler comme il veulent, je peut me retrouver coincé ...

Merci encore

Re: Fichier txt ... encore

Posté : 05 sept. 2008 08:20
par Laddy
Rien compris à ton problème..

Re: Fichier txt ... encore

Posté : 05 sept. 2008 09:32
par winnux
Bein pour faire simple, si le nom contient un caractere qui me sert a delimité mes recherches, a savoir [ ou/et ] ,tokens ce retrouve perdu :

token1 token2 token3
[1] [nicole] [20]
[2] [richard] [37]
[3] [:]clement] [37]

C'es au niveau du nom de la ligne 3 que survient le probleme,car le nom contient ], qui es un caractere delimitateur (suis pas sur que sa existe ce nom lol) et la ligne es donc interpreter comme suit :

token1 token2 token3 token4
[3] [:] clement] [37]

Hors clement fait parti de :] , le token 2

Je ne peut pas interdire l'utilisation de ces caracteres dans les noms, les infos venant d'un serveur de jeu.

Je ne pense pas pouvoir etre plus clair, j'espere qu'il existe une solution :)

Re: Fichier txt ... encore

Posté : 05 sept. 2008 14:08
par flox
Bonjour,

si ta structure n'est pas la même sur l'ensemble de ton fichier c'est pas gagné ;) .

si tu rencontre le même cas plusieurs fois sur ton fichier tu peut commencer par remplacer ":]" par "", pour uniformiser ton fichier, pour faire ça utilise l'exe SWITCH dans téléchargment.
@+

Re: Fichier txt ... encore

Posté : 05 sept. 2008 18:07
par winnux
Salut Flox,

Le probleme si j'ai bien compris, sera toujour la :
[3] [:]clement] [37] ==> ,3, ,:,clement, ,37,

Un truc qui peut peut etre vous aider a m'aider :joke

[1] ==> cette chaine s'autoincremente et ne depassera jamais 4 caracteres [] compris, elle n'es pas obligatoire, mais elle es la :(
[:]clement] ==> cette chaine es aléatoire, donc caracte inatendu etc, elle es obligatoire.
Rem A partir de la ca peut etre interressant :
[22] ==> Cette chaine es l'avant derniere (il y en a 4), elle mesure obligatoirement 40 digits
[] ==> La derniere chaine, possede 2 possibilité, mais aucune n'inclut les caracte de delimitation, elle n'es pas obligatoire.

Sa ce represente a peut pret comme suit (* etant une serie de caracteres(mais vous devez vous en douter))
[1] [*] [40 digits] [a virer]

Donc y a surement moyen, a partir de la de supprimer les premier et derniers bloks ,de partir de la fin pour dire que l'on recupere 40 digits, et de supprimer le premier et dernier caractere de ce qu'il reste de facon a ne conserver que le nom.

Enfin je reve peut etre un peu mais comme la fin es plus stable que le debut, sa pourrai etre un debut de piste :)

Merci a vous