Exemple #1
0
def unzip(csv_in, fields, csv_out_spec, csv_out_unspec, zip_field='id'):
    input_csv = iter(csv_in)

    header_row = input_csv.next()
    header = Header(header_row)

    if zip_field in header:
        raise DuplicateFieldError(zip_field)

    spec_extractors = [header.extractor(field) for field in fields]
    unspec_extractors = [
        header.extractor(field) for field in header_row if field not in fields
    ]

    def extract_to(output, extractors, row_id, row):
        output.writerow([str(row_id)] +
                        [extract_field(row) for extract_field in extractors])

    def unzip_row(row_id, row):
        extract_to(csv_out_spec, spec_extractors, row_id, row)
        extract_to(csv_out_unspec, unspec_extractors, row_id, row)

    unzip_row(zip_field, header_row)
    for zip_id, row in enumerate(input_csv):
        unzip_row(zip_id, row)
Exemple #2
0
def unzip(csv_in, fields, csv_out_spec, csv_out_unspec, zip_field='id'):
    input_csv = iter(csv_in)

    header_row = input_csv.next()
    header = Header(header_row)

    if zip_field in header:
        raise DuplicateFieldError(zip_field)

    spec_extractors = [header.extractor(field) for field in fields]
    unspec_extractors = [
        header.extractor(field)
        for field in header_row
        if field not in fields]

    def extract_to(output, extractors, row_id, row):
        output.writerow(
            [str(row_id)]
            + [extract_field(row) for extract_field in extractors])

    def unzip_row(row_id, row):
        extract_to(csv_out_spec, spec_extractors, row_id, row)
        extract_to(csv_out_unspec, unspec_extractors, row_id, row)

    unzip_row(zip_field, header_row)
    for zip_id, row in enumerate(input_csv):
        unzip_row(zip_id, row)