A voir également:
- Lire un csv avec séparateur inconnu
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Appel inconnu - Guide
- Lire epub - Guide
- Lire fichier bin - Guide
- Comment lire un message supprimé sur whatsapp - Guide
4 réponses
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
29 déc. 2015 à 14:55
29 déc. 2015 à 14:55
Bonjour,
C'est dangereux ton astuce, si un caractère se répète plus que ton séparateur (les voyelles c'est fort probable), ton programme fera n'importe quoi.
Pourquoi ne peux-tu pas connaitre le séparateur?
C'est dangereux ton astuce, si un caractère se répète plus que ton séparateur (les voyelles c'est fort probable), ton programme fera n'importe quoi.
Pourquoi ne peux-tu pas connaitre le séparateur?
dna.factory
Messages postés
25384
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
29 novembre 2024
1 613
29 déc. 2015 à 15:01
29 déc. 2015 à 15:01
Ma seule idée pour l'instant était de parcourir les caractères du fichier et prendre comme séparateur celui que l'on retrouve le plus.
Donc l'espace ? ou la lettre e ?
A des fins d'exercice l'idée est bonne.
A des fins de production, ça ne peut pas marcher...
Donc l'espace ? ou la lettre e ?
A des fins d'exercice l'idée est bonne.
A des fins de production, ça ne peut pas marcher...
NHenry
Messages postés
15164
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 novembre 2024
345
29 déc. 2015 à 15:03
29 déc. 2015 à 15:03
Je te propose peut être de voir plutôt sur chaque ligne, quel est le caractère le plus constant en terme d'apparition.
Si par exemple sur chaque ligne tu as 5 ! c'est probablement le bon séparateur.
Si par exemple sur chaque ligne tu as 5 ! c'est probablement le bon séparateur.
Merci pour vos réponses, oui en effet cela risque de ne pas fonctionné à 100%.
Ma deuxième idée est donc de compter par séparateurs qui sont le plus souvent utilisé. Les 3 types de séparateurs les plus utilisés sont "#", "," et ";".
Pour chaque caractère du flux
Si carac[i] = #
Dieze = dieze ++
FinSi
Si carac[i] = ;
Pointvirgule = pointvirgule++
FinSi
Si carac[i] = ,²
Virgule = virgule ++
FinSi
FinPour
Si dieze > pointvirgule alors
Si dieze > virgule
Separateur = dieze
Sinon
Separateur = virgule
FinSi
Sinon
Si Pointvirgule > virgule
Separateur = pointvirgule
Sinon
Separateur = virgule
FinSi
FinSi
Cela devrait fonctionné. Je ne sais pas comment seront les séparateurs car ils proviennent de fichier importer et pourront être importé par des utilisateurs lambda n'étant pas forcement au courant que le séparateur a utilisé est toujours ";" par exemple.
Ma deuxième idée est donc de compter par séparateurs qui sont le plus souvent utilisé. Les 3 types de séparateurs les plus utilisés sont "#", "," et ";".
Pour chaque caractère du flux
Si carac[i] = #
Dieze = dieze ++
FinSi
Si carac[i] = ;
Pointvirgule = pointvirgule++
FinSi
Si carac[i] = ,²
Virgule = virgule ++
FinSi
FinPour
Si dieze > pointvirgule alors
Si dieze > virgule
Separateur = dieze
Sinon
Separateur = virgule
FinSi
Sinon
Si Pointvirgule > virgule
Separateur = pointvirgule
Sinon
Separateur = virgule
FinSi
FinSi
Cela devrait fonctionné. Je ne sais pas comment seront les séparateurs car ils proviennent de fichier importer et pourront être importé par des utilisateurs lambda n'étant pas forcement au courant que le séparateur a utilisé est toujours ";" par exemple.
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
29 déc. 2015 à 15:20
29 déc. 2015 à 15:20
Rien ne t'empêche d'expliquer dans le fichier les conditions du format csv pour le programme
Tudum
>
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
29 déc. 2015 à 15:22
29 déc. 2015 à 15:22
C'était la 1er idée oui en me disant oh et puis zut ^^
dna.factory
Messages postés
25384
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
29 novembre 2024
1 613
29 déc. 2015 à 15:24
29 déc. 2015 à 15:24
Nhenry a donné une solution beaucoup plus intelligente.
le séparateur csv est le seul caractère présent le même nombre de fois dans chaque ligne.
Cette méthode est surement la plus efficace, et celle avec le moindre risque d'erreur.
Sauf évidement si les fichiers font une ligne.
le séparateur csv est le seul caractère présent le même nombre de fois dans chaque ligne.
Cette méthode est surement la plus efficace, et celle avec le moindre risque d'erreur.
Sauf évidement si les fichiers font une ligne.
dna.factory
Messages postés
25384
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
29 novembre 2024
1 613
29 déc. 2015 à 15:31
29 déc. 2015 à 15:31
un tableau à 3 dimension numéro de ligne, caractère, nombre de caractère. (on peut faire le tests sur 20 lignes, ça devrait être suffisant).
une fois le tableau rempli, on défile les caractères, et on regarde si c'est le même nombre pour chaque ligne.
une fois le tableau rempli, on défile les caractères, et on regarde si c'est le même nombre pour chaque ligne.