grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î   f9?ã@s®dZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZddlmZdddd d d d d ddddddddddddgZGdd „d ƒZGdd „d eƒZed eƒGdd„deƒZedeƒGdd„deƒZed eƒGd!d„dƒZGd"d„dƒZyeWnek r–eZYnXGd#d„dƒZdS)$z+ csv.py - read/write/investigate CSV files éN)ÚErrorÚ __version__ÚwriterÚreaderÚregister_dialectÚunregister_dialectÚ get_dialectÚ list_dialectsÚfield_size_limitÚ QUOTE_MINIMALÚ QUOTE_ALLÚQUOTE_NONNUMERICÚ QUOTE_NONEÚ__doc__)ÚDialect)ÚStringIOr r r rrrrÚexcelÚ excel_tabr rrrrr ÚSnifferrrÚ DictReaderÚ DictWriterc@sdeZdZdZdZdZdZdZdZdZ dZ dZ dZ dd„Z dd„ZdS) rzÄDescribe a CSV dialect. This must be subclassed (see csv.excel). Valid attributes are: delimiter, quotechar, escapechar, doublequote, skipinitialspace, lineterminator, quoting. ÚFNcCs)|jtkrd|_n|jƒdS)NT)Ú __class__rÚ_validÚ _validate)Úself©rú(/opt/alt/python34/lib64/python3.4/csv.pyÚ__init__)s zDialect.__init__cCsLyt|ƒWn7tk rG}ztt|ƒƒ‚WYdd}~XnXdS)N)Ú_DialectÚ TypeErrorrÚstr)rÚerrrr.szDialect._validate)Ú__name__Ú __module__Ú __qualname__rÚ_namerÚ delimiterÚ quotecharZ escapecharÚ doublequoteÚskipinitialspaceÚlineterminatorÚquotingrrrrrrrs  c@s:eZdZdZdZdZdZdZdZe Z dS)rz;Describe the usual properties of Excel-generated CSV files.ú,ú"TFz N) r#r$r%rr'r(r)r*r+r r,rrrrr5s c@seZdZdZdZdS)rzEDescribe the usual properties of Excel-generated TAB-delimited files.ú N)r#r$r%rr'rrrrr?s z excel-tabc@s:eZdZdZdZdZdZdZdZe Z dS)Ú unix_dialectz:Describe the usual properties of Unix-generated CSV files.r-r.TFÚ N) r#r$r%rr'r(r)r*r+r r,rrrrr0Ds r0Zunixc@sgeZdZdddddd„Zdd„Zedd„ƒZejd d„ƒZd d „ZdS) rNrcOsI||_||_||_t||||Ž|_||_d|_dS)Nr)Ú _fieldnamesÚrestkeyÚrestvalrÚdialectÚline_num)rÚfÚ fieldnamesr3r4r5ÚargsÚkwdsrrrrPs     zDictReader.__init__cCs|S)Nr)rrrrÚ__iter__YszDictReader.__iter__c CsS|jdkr=yt|jƒ|_Wq=tk r9Yq=Xn|jj|_|jS)N)r2ÚnextrÚ StopIterationr6)rrrrr8\s zDictReader.fieldnamescCs ||_dS)N)r2)rÚvaluerrrr8fscCsð|jdkr|jnt|jƒ}|jj|_x|gkrXt|jƒ}q:Wtt|j|ƒƒ}t|jƒ}t|ƒ}||kr²||d…||j’s z,DictWriter._dict_to_list..z(dict contains fields not in fieldnames: z, cSsg|]}t|ƒ‘qSr)Úrepr)rPÚxrrrrR•s cs%g|]}ˆj|ˆjƒ‘qSr)Úgetr4)rPrD)ÚrowdictrrrrR–s )rLrKÚjoinr8)rrVZ wrong_fieldsr)rVrrÚ _dict_to_list�s &zDictWriter._dict_to_listcCs|jj|j|ƒƒS)N)rrMrX)rrVrrrrM˜szDictWriter.writerowcCs=g}x$|D]}|j|j|ƒƒq W|jj|ƒS)N)ÚappendrXrÚ writerows)rZrowdictsZrowsrVrrrrZ›s zDictWriter.writerowsN)r#r$r%rrOrXrMrZrrrrr�s    c@sUeZdZdZdd„Zddd„Zdd„Zd d „Zd d „ZdS) rze "Sniffs" the format of a CSV file (i.e. delimiter, quotechar) Returns a Dialect object. cCsdddddg|_dS)Nr-r/ú;ú ú:)Ú preferred)rrrrr¬szSniffer.__init__NcCs˜|j||ƒ\}}}}|s?|j||ƒ\}}n|sTtdƒ‚nGdd„dtƒ}||_||_|p…d|_||_|S)zI Returns a dialect (or None) corresponding to the sample zCould not determine delimiterc@s"eZdZdZdZeZdS)zSniffer.sniff..dialectZsniffedz N)r#r$r%r&r+r r,rrrrr5¿s r5r.)Ú_guess_quote_and_delimiterÚ_guess_delimiterrrr)r'r(r*)rÚsampleÚ delimitersr(r)r'r*r5rrrÚsniff±s    z Sniffer.sniffcCs/g}xCdD];}tj|tjtjBƒ}|j|ƒ}|r Pq q W|sVdSi}i}d}x|D]ú} |jd d } | | } | r³|j| dƒd || [^\w "'])(?P ?)(?P["']).*?(?P=quote)(?P=delim)úC(?:^| )(?P["']).*?(?P=quote)(?P[^\w "'])(?P ?)úD(?P>[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?:$| )ú*(?:^| )(?P["']).*?(?P=quote)(?:$| )rFNrZquoteéÚdelimZspacerDr1z]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)T)rdrerfrg)rFNr) ÚreÚcompileÚDOTALLÚ MULTILINEÚfindallÚ groupindexrUÚKeyErrorÚmaxÚescapeÚsearch)rÚdatarbZmatchesZrestrZregexpZquotesÚdelimsZspacesÚmÚnrDr(rir*Z dq_regexpr)rrrr_Îs^         ' z"Sniffer._guess_quote_and_delimitercCsttd|jdƒƒƒ}dd„tdƒDƒ}tdt|ƒƒ}d}i}i}i}dt|t|ƒƒ} } x§| t|ƒkr)|d7}xn|| | …D]\} xS|D]K} |j| iƒ} | j| ƒ}| j|dƒd| |<| || .éé rrhrDcSs|dS)Nrhr)rTrrrÚHsz*Sniffer._guess_delimiter..css|]}|dVqdS)rhNr)rPÚitemrrrú Msz+Sniffer._guess_delimiter..gð?gÍÌÌÌÌÌì?g{®Gáz„?z%c rcSs"g|]\}}||f‘qSrr)rPrQÚvrrrrRws )rréÿÿÿÿ)ÚlistÚfilterÚsplitÚrangeÚminrArUÚcountÚkeysÚitemsrqÚremoveÚsumÚfloatr^Úsort)rrtrbÚasciiZ chunkLengthZ iterationZ charFrequencyZmodesruÚstartÚendÚlineÚcharZ metaFrequencyZfreqrˆZmodeListZtotalZ consistencyZ thresholdrQrrir*rCrrrr`st  &$ !   zSniffer._guess_delimiterc Cstt|ƒ|j|ƒƒ}t|ƒ}t|ƒ}i}xt|ƒD]}d||s. ^      2!