Project

General

Profile

« Previous | Next » 

Revision 1621

csvs.py: stream_info(): Set dialect.quoting = csv.QUOTE_NONE for TSVs because they usually don't quote fields. Factored dialect detecting code into new function sniff().

View differences:

lib/csvs.py
7 7

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

  
10
def sniff(line):
11
    '''Automatically detects the dialect'''
12
    dialect = csv.Sniffer().sniff(line, delimiters)
13
    # TSVs usually don't quote fields (nor doublequote embedded quotes)
14
    if dialect.delimiter == '\t': dialect.quoting = csv.QUOTE_NONE
15
    else: dialect.doublequote = True # Sniffer doesn't turn this on by default
16
    return dialect
17

  
10 18
def stream_info(stream):
11 19
    '''Automatically detects the dialect based on the header line
12 20
    @return NamedTuple {header_line, dialect}'''
13 21
    info = util.NamedTuple()
14 22
    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
23
    info.dialect = sniff(info.header_line)
18 24
    return info
19 25

  
20 26
def reader_and_header(stream):

Also available in: Unified diff