Domanda

When running this code im having the first element of the list appended to the end of the header. What im possibly doing wrong ? Thanks

DETAIL_CODE,ZIP_CODE,UPD_KEY_NUM,ACTION_CODE,RECORD_TYPE,CARRIERR_ID,ST_PDIR_ABBRV,ST_NAME,ST_SUF_ABBRV,ST_POSTD_ABBRV,AD_P_LNUMB,AD_P_HNUMB,AD_P_PARITY,BUILD_FIRM_NM,AD_S_ABBRV,AD_S_LNUM,AD_S_HNUM,AD_S_PARITY,PLS4_LN_ZSNUM,PLS4_LN_ZSEGNUM,PLS4_HN_ZSNUM,PLS4_HN_ZSEGNUM,BASE_ALT_CODE,LACS_STA_IND,GOV_BUILD_IND,FINANCE_NUM,STATE_ABBRV,COUNTY_NUM,CONGR_DIST_NUM,MUNIC_CT_STATE_KEY,URB_CT_STATE_KEY,PREF_LINE_STATE_KEYC, ,COPYRIGHT(,C,), 05-,14, USPS 001                   ,    ,  ,          ,          , ,                                        ,    ,        ,  , ,  ,  ,  ,  , , , ,      ,  ,   ,  ,      ,      ,

import csv

c = [['C', '     ', 'COPYRIGHT(', 'C', ')', ' 05-', '14', ' USPS 001                   ', '    ', '  ', '          ', '          ', ' ', '                                        ', '    ', '        ', '        ', ' ', '  ', '  ', '  ', '  ', ' ', ' ', ' ', '      ', '  ', '   ', '  ', '      ', '      ', '     '],
    ['D', '80001', 'Z113111126', 'A', 'P', 'B001', '  ', 'PO BOX                      ', '    ', '  ', '0000000001', '0000000015', 'B', '                                        ', '    ', '        ', '        ', ' ', '00', '01', '00', '15', 'B', ' ', ' ', '070414', 'CO', '059', '07', '      ', '      ', 'Z1104'],
    ['D', '80001', 'Z113111127', 'A', 'P', 'B003', '  ', 'PO BOX                      ', '    ', '  ', '3A        ', '3A        ', 'B', '                                        ', '    ', '        ', '        ', ' ', '00', '20', '00', '20', 'B', ' ', ' ', '070414', 'CO', '059', '07', '      ', '      ', 'Z1104'],
    ['D', '80001', 'Z113111128', 'A', 'P', 'B003', '  ', 'PO BOX                      ', '    ', '  ', '3B        ', '3B        ', 'B', '                                        ', '    ', '        ', '        ', ' ', '00', '30', '00', '30', 'B', ' ', ' ', '070414', 'CO', '059', '07', '      ', '      ', 'Z1104']]

f = open('./out/test_write_csv.csv', 'wt')
f.write('DETAIL_CODE,ZIP_CODE,UPD_KEY_NUM,ACTION_CODE,RECORD_TYPE,CARRIERR_ID,ST_PDIR_ABBRV,ST_NAME,ST_SUF_ABBRV,ST_POSTD_ABBRV,AD_P_LNUMB,AD_P_HNUMB,AD_P_PARITY,BUILD_FIRM_NM,AD_S_ABBRV,AD_S_LNUM,AD_S_HNUM,AD_S_PARITY,PLS4_LN_ZSNUM,PLS4_LN_ZSEGNUM,PLS4_HN_ZSNUM,PLS4_HN_ZSEGNUM,BASE_ALT_CODE,LACS_STA_IND,GOV_BUILD_IND,FINANCE_NUM,STATE_ABBRV,COUNTY_NUM,CONGR_DIST_NUM,MUNIC_CT_STATE_KEY,URB_CT_STATE_KEY,PREF_LINE_STATE_KEY')

try:
    writer = csv.writer(f)
    for i in c:
        writer.writerow(i)
finally:
    f.close()
È stato utile?

Soluzione

You forgot to write a newline at the end.

However, leave this to the csv module instead; write the header as a row:

writer.writerow(['DETAIL_CODE', 'ZIP_CODE', 'UPD_KEY_NUM', 'ACTION_CODE',
                 'RECORD_TYPE', 'CARRIERR_ID', 'ST_PDIR_ABBRV', 'ST_NAME', 
                 'ST_SUF_ABBRV', 'ST_POSTD_ABBRV', 'AD_P_LNUMB', 'AD_P_HNUMB',
                 'AD_P_PARITY', 'BUILD_FIRM_NM', 'AD_S_ABBRV', 'AD_S_LNUM',
                 'AD_S_HNUM', 'AD_S_PARITY', 'PLS4_LN_ZSNUM', 'PLS4_LN_ZSEGNUM',
                 'PLS4_HN_ZSNUM', 'PLS4_HN_ZSEGNUM', 'BASE_ALT_CODE', 'LACS_STA_IND',
                 'GOV_BUILD_IND', 'FINANCE_NUM', 'STATE_ABBRV', 'COUNTY_NUM', 
                 'CONGR_DIST_NUM', 'MUNIC_CT_STATE_KEY', 'URB_CT_STATE_KEY',
                 'PREF_LINE_STATE_KEY'])

because the csv module usually writes a \r\n line separator for such files, depending on the dialect.

Altri suggerimenti

You need a newline after the header (\n):

f.write('DETAIL_CODE, ... PREF_LINE_STATE_KEY\n')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top