Buongiorno a tutti, ho la seguente esigenza: parsare un file ldif prodotto dall'esportazione di una rubrica di Thunderbird.
Prendiamo questo ldif come esempio: --- dn: cn=Mario Rossi,mail=mario.ro...@domain.com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: mozillaAbPersonAlpha givenName: Mario Rossi cn: Mario Rossi mail: mario.ro...@domain.com modifytimestamp: 1632815299 --- E il codice necessario per fare il parsing: --- #!/usr/bin/env python3 import sys from ldif3 import LDIFParser ldif_path = sys.argv[1] with open(ldif_path, 'rb') as ldif_file: parser = LDIFParser(ldif_file) for dn, entry in parser.parse(): print(dn, entry['cn']) --- Funziona perfettamente fino a che non trovi un contatto che una virgola nel CN. Esempio di ldif problematico: --- dn: cn=Mario, Rossi,mail=mario.ro...@domain.com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: mozillaAbPersonAlpha givenName: Mario Rossi cn: Mario, Rossi mail: mario.ro...@domain.com modifytimestamp: 1632815299 --- Errore che si ottiene: --- Traceback (most recent call last): File "./simple.py", line 11, in <module> for dn, entry in parser.parse(): File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 384, in parse yield self._parse_entry_record(block) File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 360, in _parse_entry_record self._check_dn(dn, attr_value) File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 339, in _check_dn self._error('No valid string-representation of ' File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 330, in _error raise ValueError(msg) ValueError: No valid string-representation of distinguished name cn=Mario, Rossi,mail=mario.ro...@domain.com. --- Nota: il CN a volte è espresso come base64 e al suo interno ci può essere una virgola che rompe la sintassi. *E' possibile "ignorare" i valori errati con un try?* Come applicarlo al ciclo? https://stackoverflow.com/questions/39889811/python-ldif3-parser-and-exception-in-for-loop Ogni suggerimento è ben accetto :-)
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python