[code.view]

[top] / python / PyMOTW / csv / csv_dialect_sniffer.py

     #!/usr/bin/env python
     # encoding: utf-8
     #
     # Copyright (c) 2009 Doug Hellmann All rights reserved.
     #
     """
     """
     #end_pymotw_header
     
     import csv
     from StringIO import StringIO
     import textwrap
     
     csv.register_dialect('escaped', escapechar='\\', doublequote=False, quoting=csv.QUOTE_NONE)
     csv.register_dialect('singlequote', quotechar="'", quoting=csv.QUOTE_ALL)
     
     # Generate sample data for all known dialects
     
     samples = []
     
     for name in sorted(csv.list_dialects()):
         buffer = StringIO()
         dialect = csv.get_dialect(name)
         writer = csv.writer(buffer, dialect=dialect)
         for i in xrange(3):
             writer.writerow(
                 ('col1', i, '10/%02d/2010' % i,
                  'Contains special chars: " \' %s to be parsed' % dialect.delimiter)
                 )
         samples.append( (name, dialect, buffer.getvalue()) )
     
     # Guess the dialect for a given sample, then use the results to parse
     # the data.
      
     sniffer = csv.Sniffer()
     
     for name, expected, sample in samples:
         print '\nDialect: "%s"\n' % name
     
         dialect = sniffer.sniff(sample, delimiters=',\t')
     
         reader = csv.reader(StringIO(sample), dialect=dialect)
         for row in reader:
             print row
     

[top] / python / PyMOTW / csv / csv_dialect_sniffer.py

contact | logmethods.com