Project

General

Profile

« Previous | Next » 

Revision 1444

csvs.py: Added stream_info() to return NamedTuple {header_line, dialect} for later use in cat_csv. Changed reader_and_header() to use stream_info().

View differences:

lib/csvs.py
3 3
import csv
4 4
import StringIO
5 5

  
6
import util
7

  
6 8
delimiters = ',\t`'
7 9

  
10
def stream_info(stream):
11
    '''Automatically detects the dialect based on the header line
12
    @return NamedTuple {header_line, dialect}'''
13
    info = util.NamedTuple()
14
    info.header_line = stream.readline()
15
    sniffer = csv.Sniffer()
16
    info.dialect = sniffer.sniff(info.header_line, delimiters)
17
    info.dialect.doublequote = True # Sniffer doesn't turn this on by default
18
    return info
19

  
8 20
def reader_and_header(stream):
9 21
    '''Automatically detects the dialect based on the header line
10 22
    @return tuple (reader, header)'''
11
    header_line = stream.readline()
12
    sniffer = csv.Sniffer()
13
    dialect = sniffer.sniff(header_line, delimiters)
14
    dialect.doublequote = True # Sniffer doesn't turn this on by default
15
    header = csv.reader(StringIO.StringIO(header_line), dialect).next()
16
    return (csv.reader(stream, dialect), header)
23
    info = stream_info(stream)
24
    header = csv.reader(StringIO.StringIO(info.header_line),
25
        info.dialect).next()
26
    return (csv.reader(stream, info.dialect), header)

Also available in: Unified diff