Détecter le séparateur CSV : virgule, point-virgule, tabulation
Les fichiers CSV n'emploient pas toujours des virgules. Les exports régionaux utilisent souvent des points-virgules, les pipelines de données peuvent préférer les tabulations et les outils en ligne de commande produisent fréquemment du texte séparé par des barres.
Lancer gratuitement
Ce détecteur analyse un échantillon représentatif et identifie le séparateur le plus probable parmi la virgule, le point-virgule, la tabulation et la barre verticale. Il exige une structure stable sur toutes les lignes non vides et ne devine donc rien lorsque les données sont irrégulières. Le résultat indique le caractère, son nom, le nombre de colonnes estimé et le nombre de lignes étudiées.
Choisissez un échantillon CSV représentatif
Collez au moins deux lignes non vides provenant du même fichier CSV, idéalement l'en-tête et plusieurs lignes de données ordinaires. Un bon échantillon conserve les séparateurs et les retours à la ligne d'origine ; il est inutile de transmettre un fichier volumineux entier pour en reconnaître le format. Le détecteur examine quatre candidats courants : virgule, point-virgule, tabulation et barre verticale. Il ignore les lignes vides, y compris la dernière ligne ajoutée par de nombreux éditeurs, car elles ne portent aucune structure de champs. Chaque ligne significative doit contenir le même nombre d'occurrences du véritable séparateur. Ainsi, un en-tête de trois champs et deux lignes de trois champs comportent chacun deux séparateurs. Si l'extrait contient une explication avant l'en-tête, des enregistrements multilignes ou des lignes tronquées, nettoyez-le ou choisissez une partie plus représentative. Une entrée régulière fournit une preuve structurelle plutôt qu'un caractère isolé à interpréter. Le texte reste intact : l'outil signale son constat, mais ne reformate, n'analyse, ne conserve et ne corrige jamais le CSV fourni.
Comprenez la décision fondée sur la fréquence
Pour chaque caractère candidat, le détecteur compte les occurrences littérales sur toutes les lignes non vides. Un candidat n'est retenu que s'il apparaît au moins une fois sur chaque ligne et si son nombre d'occurrences reste identique. Parmi les candidats admissibles, celui dont la fréquence par ligne est la plus élevée l'emporte. La méthode est déterministe et vérifiable : un même texte donne toujours le même résultat, sans modèle, connexion réseau, réglage régional ni choix aléatoire. Le nombre de colonnes retourné vaut une unité de plus que le nombre d'occurrences gagnant ; le total de lignes précise la quantité de données examinée. Cette analyse est volontairement plus étroite qu'un parseur CSV complet. Les caractères candidats placés dans des valeurs entre guillemets sont eux aussi comptés. Si un texte cité contient un nombre variable de virgules tandis que les points-virgules séparent régulièrement les champs, ces derniers peuvent tout de même être reconnus. En revanche, des citations complexes ou des enregistrements multilignes peuvent rendre tous les candidats irréguliers. Le détecteur renvoie alors une erreur au lieu d'une supposition fragile. Utilisez ensuite un parseur CSV spécialisé pour gérer intégralement guillemets et échappements.
Traitez les échantillons irréguliers ou ambigus
Une erreur est pertinente lorsque l'échantillon ne permet pas de défendre une réponse. Si ni la virgule, ni le point-virgule, ni la tabulation, ni la barre ne présente le même nombre positif sur toutes les lignes non vides, l'outil indique qu'aucun candidat n'est régulier. Cette situation révèle souvent des lignes endommagées, des exports mélangés, des commentaires collés ou un contenu qui n'est pas réellement délimité. Une autre erreur signale l'ambiguïté : plusieurs candidats peuvent partager la fréquence régulière maximale. En choisir un selon une priorité arbitraire rendrait l'analyse suivante imprévisible ; le détecteur demande donc un extrait plus clair. Ajoutez des lignes représentatives, retirez les commentaires périphériques ou vérifiez les réglages d'export du système source. Une ligne unique est également refusée, puisque la répétition de la structure constitue la preuve centrale de la méthode. Après une détection réussie, transmettez le caractère obtenu à votre lecteur CSV et vérifiez au besoin que les lignes analysées possèdent le nombre de colonnes annoncé. L'utilisation dans le navigateur est gratuite, tandis que les appels API automatisés coûtent $0.002 par requête. Les deux canaux exécutent la même logique pure.
Cas d’usage
Configurez automatiquement un import
Examinez un extrait fournisseur avant de choisir le séparateur d'un parseur CSV ou d'un import en base de données.
Diagnostiquez un dépôt de feuille de calcul
Vérifiez si un export utilise le point-virgule régional plutôt que la virgule attendue par le formulaire.
Validez les hypothèses du pipeline
Contrôlez la stabilité structurelle du texte délimité avant une transformation ou une mise en correspondance de schéma.
Questions fréquentes
Quels séparateurs peuvent être détectés ?
Les candidats sont la virgule, le point-virgule, la tabulation et la barre verticale.
Quand un séparateur est-il considéré comme régulier ?
Il doit apparaître au moins une fois et présenter exactement le même nombre d'occurrences sur chaque ligne non vide.
Les lignes vides sont-elles prises en compte ?
Non. Les lignes vides ou composées uniquement d'espaces sont ignorées, y compris une ligne finale vide.
La détection comprend-elle les champs CSV entre guillemets ?
Non. Elle effectue un comptage littéral et inclut donc les caractères candidats présents dans les valeurs citées.
Pourquoi un échantillon ambigu provoque-t-il une erreur ?
Si plusieurs candidats partagent la meilleure fréquence régulière, une sélection prioritaire ne serait qu'une supposition.
Combien coûte une requête API ?
Chaque requête API coûte $0.002 ; la version pour navigateur s'exécute gratuitement en local.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/data/detect-csv-delimiter \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"name,city,score\nAda,London,92\nLinus,Helsinki,88"}'const res = await fetch("https://api.kit.forhosting.com/data/detect-csv-delimiter", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "name,city,score\nAda,London,92\nLinus,Helsinki,88"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/detect-csv-delimiter",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "name,city,score\nAda,London,92\nLinus,Helsinki,88"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/detect-csv-delimiter", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"name,city,score\\nAda,London,92\\nLinus,Helsinki,88"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"name,city,score\nAda,London,92\nLinus,Helsinki,88"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/detect-csv-delimiter", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "name,city,score\nAda,London,92\nLinus,Helsinki,88"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.detect_csv_delimiter",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |