ž §ÿf9?c@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($u+ csv.py - read/write/investigate CSV files iN(uErroru __version__uwriterureaderuregister_dialectuunregister_dialectu get_dialectu list_dialectsufield_size_limitu QUOTE_MINIMALu QUOTE_ALLuQUOTE_NONNUMERICu QUOTE_NONEu__doc__(uDialect(uStringIOu QUOTE_MINIMALu QUOTE_ALLuQUOTE_NONNUMERICu QUOTE_NONEuErroruDialectu__doc__uexcelu excel_tabufield_size_limitureaderuwriteruregister_dialectu get_dialectu list_dialectsuSnifferuunregister_dialectu __version__u DictReaderu DictWritercBsh|EeZdZdZdZdZdZdZ dZ dZ dZ dZ dZdd„Zdd„ZdS( uDialectuÄDescribe a CSV dialect. This must be subclassed (see csv.excel). Valid attributes are: delimiter, quotechar, escapechar, doublequote, skipinitialspace, lineterminator, quoting. ucCs)|jtkrd|_n|jƒdS(NT(u __class__uDialectuTrueu_validu _validate(uself((u(/opt/alt/python33/lib64/python3.3/csv.pyu__init__)s uDialect.__init__cCsLyt|ƒWn7tk rG}ztt|ƒƒ‚WYdd}~XnXdS(N(u_Dialectu TypeErroruErrorustr(uselfue((u(/opt/alt/python33/lib64/python3.3/csv.pyu _validate.suDialect._validateNF(u__name__u __module__u __qualname__u__doc__u_nameuFalseu_validuNoneu delimiteru quotecharu escapecharu doublequoteuskipinitialspaceulineterminatoruquotingu__init__u _validate(u __locals__((u(/opt/alt/python33/lib64/python3.3/csv.pyuDialects cBs>|EeZdZdZdZdZdZdZ dZ e Z dS(uexcelu;Describe the usual properties of Excel-generated CSV files.u,u"u NTF( u__name__u __module__u __qualname__u__doc__u delimiteru quotecharuTrueu doublequoteuFalseuskipinitialspaceulineterminatoru QUOTE_MINIMALuquoting(u __locals__((u(/opt/alt/python33/lib64/python3.3/csv.pyuexcel5scBs |EeZdZdZdZdS(u excel_tabuEDescribe the usual properties of Excel-generated TAB-delimited files.u N(u__name__u __module__u __qualname__u__doc__u delimiter(u __locals__((u(/opt/alt/python33/lib64/python3.3/csv.pyu excel_tab?su excel-tabcBs>|EeZdZdZdZdZdZdZ dZ e Z dS(u unix_dialectu:Describe the usual properties of Unix-generated CSV files.u,u"u NTF( u__name__u __module__u __qualname__u__doc__u delimiteru quotecharuTrueu doublequoteuFalseuskipinitialspaceulineterminatoru QUOTE_ALLuquoting(u __locals__((u(/opt/alt/python33/lib64/python3.3/csv.pyu unix_dialectDsu unix_dialectuunixcBsk|EeZdZd d d ddd„Zdd„Zedd„ƒZejdd„ƒZd d „Z d S( u DictReaderuexcelcOsI||_||_||_t||||Ž|_||_d|_dS(Ni(u _fieldnamesurestkeyurestvalureaderudialectuline_num(uselfufu fieldnamesurestkeyurestvaludialectuargsukwds((u(/opt/alt/python33/lib64/python3.3/csv.pyu__init__Ps     uDictReader.__init__cCs|S(N((uself((u(/opt/alt/python33/lib64/python3.3/csv.pyu__iter__YsuDictReader.__iter__c CsS|jdkr=yt|jƒ|_Wq=tk r9Yq=Xn|jj|_|jS(N(u _fieldnamesuNoneunextureaderu StopIterationuline_num(uself((u(/opt/alt/python33/lib64/python3.3/csv.pyu fieldnames\s uDictReader.fieldnamescCs ||_dS(N(u _fieldnames(uselfuvalue((u(/opt/alt/python33/lib64/python3.3/csv.pyu fieldnamesfscCsð|jdkr|jnt|jƒ}|jj|_x|gkrXt|jƒ}q:Wtt|j|ƒƒ}t|jƒ}t|ƒ}||kr²||d…||j’s u,DictWriter._dict_to_list..u(dict contains fields not in fieldnames: u, cSsg|]}t|ƒ‘qS((urepr(u.0ux((u(/opt/alt/python33/lib64/python3.3/csv.pyu •s cs%g|]}ˆj|ˆjƒ‘qS((ugeturestval(u.0ukey(urowdictuself(u(/opt/alt/python33/lib64/python3.3/csv.pyu –s (u extrasactionu ValueErrorujoinu fieldnames(uselfurowdictu wrong_fields((urowdictuselfu(/opt/alt/python33/lib64/python3.3/csv.pyu _dict_to_lists &uDictWriter._dict_to_listcCs|jj|j|ƒƒS(N(uwriteruwriterowu _dict_to_list(uselfurowdict((u(/opt/alt/python33/lib64/python3.3/csv.pyuwriterow˜suDictWriter.writerowcCs=g}x$|D]}|j|j|ƒƒq W|jj|ƒS(N(uappendu _dict_to_listuwriteru writerows(uselfurowdictsurowsurowdict((u(/opt/alt/python33/lib64/python3.3/csv.pyu writerows›s uDictWriter.writerowsN(u__name__u __module__u __qualname__u__init__u writeheaderu _dict_to_listuwriterowu writerows(u __locals__((u(/opt/alt/python33/lib64/python3.3/csv.pyu DictWriters    cBsY|EeZdZdZdd„Zd dd„Zdd„Zdd „Zd d „Z d S( uSnifferue "Sniffs" the format of a CSV file (i.e. delimiter, quotechar) Returns a Dialect object. cCsdddddg|_dS(Nu,u u;u u:(u preferred(uself((u(/opt/alt/python33/lib64/python3.3/csv.pyu__init__¬suSniffer.__init__cCs˜|j||ƒ\}}}}|s?|j||ƒ\}}n|sTtdƒ‚nGdd„dtƒ}||_||_|p…d|_||_|S(uI Returns a dialect (or None) corresponding to the sample uCould not determine delimitercBs&|EeZdZdZdZeZdS(uSniffer.sniff..dialectusniffedu N(u__name__u __module__u __qualname__u_nameulineterminatoru QUOTE_MINIMALuquoting(u __locals__((u(/opt/alt/python33/lib64/python3.3/csv.pyudialect¿sudialectu"(u_guess_quote_and_delimiteru_guess_delimiteruErroruDialectu doublequoteu delimiteru quotecharuskipinitialspace(uselfusampleu delimitersu quotecharu doublequoteu delimiteruskipinitialspaceudialect((u(/opt/alt/python33/lib64/python3.3/csv.pyusniff±s    u Sniffer.sniffcCs/g}xCdD];}tj|tjtjBƒ}|j|ƒ}|r Pq q W|sVdSi}i}d}x|D]ú} |jdd} | | } | r³|j| dƒd|| [^\w "'])(?P ?)(?P["']).*?(?P=quote)(?P=delim)uC(?:^| )(?P["']).*?(?P=quote)(?P[^\w "'])(?P ?)uD(?P>[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?:$| )u*(?:^| )(?P["']).*?(?P=quote)(?:$| )uiuquoteiudelimuspaceukeyu u]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)(uF(?P[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?P=delim)uC(?:^| )(?P["']).*?(?P=quote)(?P[^\w "'])(?P ?)uD(?P>[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?:$| )u*(?:^| )(?P["']).*?(?P=quote)(?:$| )FN(uFNiT(ureucompileuDOTALLu MULTILINEufindalluFalseuNoneu groupindexugetuKeyErrorumaxuescapeusearchuTrue(uselfudatau delimitersumatchesurestruregexpuquotesudelimsuspacesumunukeyu quotecharudelimuskipinitialspaceu dq_regexpu doublequote((u(/opt/alt/python33/lib64/python3.3/csv.pyu_guess_quote_and_delimiterÎs^         ' u"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| |<| || .s u,Sniffer._guess_delimiter..ii iiukeycSs|dS(Ni((ux((u(/opt/alt/python33/lib64/python3.3/csv.pyuHsu*Sniffer._guess_delimiter..css|]}|dVqdS(iN((u.0uitem((u(/opt/alt/python33/lib64/python3.3/csv.pyu Msu+Sniffer._guess_delimiter..gð?gÍÌÌÌÌÌì?g{®Gáz„?u%c ucSs"g|]\}}||f‘qS(((u.0ukuv((u(/opt/alt/python33/lib64/python3.3/csv.pyu ws N(uiiÿÿÿÿ(ulistufilteruNoneuspliturangeuminulenugetucountukeysuitemsumaxuremoveusumufloatu preferredusort(uselfudatau delimitersuasciiu chunkLengthu iterationu charFrequencyumodesudelimsustartuendulineucharu metaFrequencyufrequitemsumodeListutotalu consistencyu thresholdukuvudelimuskipinitialspaceud((u(/opt/alt/python33/lib64/python3.3/csv.pyu_guess_delimiterst  &$ !   uSniffer._guess_delimiterc Cstt|ƒ|j|ƒƒ}t|ƒ}t|ƒ}i}xt|ƒD]}d||s. ^      2!