Rilevare il delimitatore CSV: virgola, punto e virgola, tab
I file CSV non usano sempre la virgola. Le esportazioni regionali adottano spesso il punto e virgola, le pipeline di dati possono preferire la tabulazione e gli strumenti da riga di comando producono frequentemente testo separato da barre.
Esegui gratis nel browser
Questo rilevatore esamina un campione rappresentativo e individua il delimitatore più probabile tra virgola, punto e virgola, tabulazione e barra verticale. Richiede uno schema stabile in tutte le righe non vuote, quindi non formula ipotesi quando la struttura è incoerente. Il risultato riporta il carattere, il suo nome, il numero stimato di colonne e la quantità di righe esaminate.
Scelga un campione CSV rappresentativo
Incolli almeno due righe non vuote dello stesso file CSV, preferibilmente l'intestazione e diverse righe di dati ordinarie. Un campione utile conserva i separatori e le interruzioni di riga originali; non occorre caricare un intero file di grandi dimensioni solo per riconoscerne il formato. Il rilevatore considera quattro candidati comuni: virgola, punto e virgola, tabulazione e barra verticale. Le righe vuote, compresa quella finale lasciata da molti editor, vengono ignorate perché non esprimono una struttura di campi. Ogni riga significativa dovrebbe contenere lo stesso numero di occorrenze del separatore reale. Per esempio, un'intestazione con tre campi e due righe con tre campi producono due separatori per riga. Se il campione contiene testo esplicativo prima dell'intestazione, record su più righe o righe troncate, lo ripulisca oppure scelga una sezione più rappresentativa. Un input uniforme offre prove sulla struttura invece di richiedere un'inferenza da un singolo carattere isolato. Il contenuto rimane invariato: il rilevamento comunica il risultato, ma non riformatta, analizza, conserva o corregge il CSV fornito.
Comprenda la scelta basata sulla frequenza
Per ogni carattere candidato, il rilevatore conta le occorrenze letterali in tutte le righe non vuote. Un candidato resta valido soltanto se compare almeno una volta in ogni riga e mantiene esattamente lo stesso conteggio. Fra i candidati validi viene scelto quello con la maggiore frequenza per riga. Il procedimento è deterministico e facilmente verificabile: lo stesso testo produce sempre lo stesso risultato, senza modelli, rete, impostazioni locali o scelte casuali. Il numero di colonne restituito equivale al conteggio vincente più uno, mentre il totale delle righe indica quante prove sono state analizzate. L'analisi di frequenza è volutamente più limitata di un parser CSV completo. Anche i caratteri candidati presenti nei valori racchiusi tra virgolette vengono contati. Se il testo tra virgolette contiene quantità variabili di virgole mentre i punti e virgola separano i campi in modo costante, questi ultimi possono comunque risultare corretti; citazioni complesse o record multilinea possono però rendere incoerenti tutti i candidati. In tal caso viene restituito un errore anziché una supposizione inaffidabile. Per gestire completamente virgolette ed escape, usi successivamente un parser CSV dedicato.
Gestisca campioni incoerenti o ambigui
Un errore è utile quando il campione non sostiene una risposta attendibile. Se nessuna virgola, punto e virgola, tabulazione o barra presenta lo stesso conteggio positivo in tutte le righe non vuote, lo strumento segnala che nessun candidato compare con regolarità. Ciò rivela spesso righe danneggiate, esportazioni miste, note incollate o un campione che non contiene affatto dati delimitati. Un secondo errore riguarda l'ambiguità: due o più candidati possono condividere la frequenza costante più alta. Sceglierne uno secondo una priorità arbitraria renderebbe imprevedibile l'elaborazione successiva, quindi il rilevatore richiede un campione più chiaro. Aggiunga righe rappresentative, rimuova i commenti circostanti o controlli le impostazioni di esportazione del sistema di origine. Anche una sola riga viene rifiutata, poiché la struttura ripetuta tra righe costituisce la prova centrale del metodo. Dopo un esito positivo, passi il carattere restituito al lettore CSV e, se opportuno, verifichi che le righe analizzate abbiano il numero di colonne indicato. L'uso nel browser è gratuito, mentre le chiamate API automatizzate costano $0.002 per richiesta. Entrambi i canali eseguono la stessa logica pura.
Casi d'uso
Configuri automaticamente un'importazione
Esamini un campione del fornitore prima di impostare il delimitatore di un parser CSV o di un'importazione nel database.
Diagnostichi un caricamento di foglio elettronico
Verifichi se un'esportazione usa il punto e virgola regionale invece della virgola prevista dal modulo.
Convalidi le ipotesi della pipeline
Controlli che il testo delimitato in ingresso mantenga una struttura stabile prima della trasformazione o della mappatura dello schema.
Domande frequenti
Quali delimitatori possono essere rilevati?
I candidati sono virgola, punto e virgola, tabulazione e barra verticale.
Quando un delimitatore è considerato coerente?
Deve comparire almeno una volta e avere esattamente lo stesso conteggio in ogni riga non vuota.
Le righe vuote vengono incluse?
No. Le righe vuote o contenenti solo spazi vengono ignorate, compresa un'eventuale riga finale vuota.
Il rilevamento interpreta i campi CSV tra virgolette?
No. Esegue un'analisi letterale, quindi conta i caratteri candidati anche dentro i valori tra virgolette.
Perché un campione ambiguo restituisce un errore?
Se più candidati condividono la frequenza coerente più alta, sceglierne uno per priorità sarebbe una supposizione.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002; la versione nel browser viene eseguita localmente e gratuitamente.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"text": "name,city,score\nAda,London,92\nLinus,Helsinki,88"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.detect_csv_delimiter",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |