Lire un csv avec séparateur inconnu
Tudum
-
Tudum -
Tudum -
Bonjour,
Je cherche un lire fichier de type CSV avec C#.
Pour le moment, les seuls solutions possibles sont celles qui connaissent à l'avance le séparateur.
Ma question est-il possible de lire un fichier csv quand on ne connait pas le séparateur ?
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.
Merci d'avance,
Je cherche un lire fichier de type CSV avec C#.
Pour le moment, les seuls solutions possibles sont celles qui connaissent à l'avance le séparateur.
Ma question est-il possible de lire un fichier csv quand on ne connait pas le séparateur ?
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.
Merci d'avance,
A voir également:
- Lire un csv avec séparateur inconnu
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Numero inconnu - Guide
- Comment lire un message supprimé sur whatsapp - Guide
- Lire fichier bin - Guide
4 réponses
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?
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...
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.