python / python/cpython

`csv.Sniffer.sniff()` raises `Could not determine delimiter` when the sample contains a field larger than field_size_limit()

Aperta
#157,678 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

stdlib type-bug
Lingua principale
Python
Stelle
77.2k
Fork
35.9k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug report

Bug description:
Summary

csv.Sniffer().sniff() raises csv.Error: Could not determine delimiter for a sample whose first row contains a field longer than the current csv.field_size_limit() (131072 by default), even when every following row is consistently delimited.

Reproduction Code
import csv 
 
sample = 'a,"' + 'x' * 200_000 + '",b\n' + 'c,d,e\n' * 50 
print(csv.Sniffer().sniff(sample).delimiter) 
Actual Behavior
Traceback (most recent call last): 
  File "repro.py", line 4, in <module> 
    print(csv.Sniffer().sniff(sample).delimiter) 
          ~~~~~~~~~~~~~~~~~~~^^^^^^^^ 
  File "Lib/csv.py", line 384, in sniff 
    raise Error("Could not determine delimiter") 
_csv.Error: Could not determine delimiter 
Expected Behavior

sniff() should return a dialect with `delimiter=','

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs
  • gh-157689

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il problema con l’esempio dell’issue, quindi ispeziona Lib/csv.py intorno a Sniffer.sniff(). Verifica in che modo field_size_limit influisce sul rilevamento del delimitatore e accertati che l’esempio restituisca un dialetto il cui delimitatore sia una virgola, senza indebolire il comportamento del limite. La PR gh-157689 collegata nell’issue indica che questo lavoro potrebbe essere già in corso.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
backend
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.