Czy mogę zaimportować plik CSV i automatycznie wywnioskować separator?

Chcę zaimportować dwa rodzaje plików CSV, niektóre używają „;” dla ogranicznika, a inni używają „,”. Do tej pory przełączałem się między kolejnymi dwiema liniami:

reader=csv.reader(f,delimiter=';')

lub

reader=csv.reader(f,delimiter=',')

Czy jest możliwe, aby nie określać separatora i pozwolić programowi na sprawdzenie właściwego separatora?

Rozwiązania poniżej (Blender i sharth) wydają się działać dobrze w przypadku plików rozdzielanych przecinkami (generowanych za pomocą Libroffice), ale nie w przypadku plików rozdzielonych średnikami (generowanych za pomocą MS Office). Oto pierwsze wiersze jednego pliku rozdzielonego średnikami:

ReleveAnnee;ReleveMois;NoOrdre;TitreRMC;AdopCSRegleVote;AdopCSAbs;AdoptCSContre;NoCELEX;ProposAnnee;ProposChrono;ProposOrigine;NoUniqueAnnee;NoUniqueType;NoUniqueChrono;PropoSplittee;Suite2LecturePE;Council PATH;Notes
1999;1;1;1999/83/EC: Council Decision of 18 January 1999 authorising the Kingdom of Denmark to apply or to continue to apply reductions in, or exemptions from, excise duties on certain mineral oils used for specific purposes, in accordance with the procedure provided for in Article 8(4) of Directive 92/81/EEC;U;;;31999D0083;1998;577;COM;NULL;CS;NULL;;;;Propos* are missing on Celex document
1999;1;2;1999/81/EC: Council Decision of 18 January 1999 authorising the Kingdom of Spain to apply a measure derogating from Articles 2 and 28a(1) of the Sixth Directive (77/388/EEC) on the harmonisation of the laws of the Member States relating to turnover taxes;U;;;31999D0081;1998;184;COM;NULL;CS;NULL;;;;Propos* are missing on Celex document

questionAnswers(5)

yourAnswerToTheQuestion