[Tutor] Help? Making Variables out of the header row in a CSV file

Luke Paireepinart rabidpoobear at gmail.com
Wed Jun 21 04:06:58 CEST 2006


Ralph H. Stoos Jr. wrote:
> All,
>
> Please forgive the long question, but duty calls me to get something
> done with Python that I don't want somebody to do with Microsloth Excel or Miserable
> Basic.
>   
I am sympathetic to your cause.
> The part I can't seem to get going has to do with making variables out
> of the header row in the CSV file.  The way it needs to work is that the
> first row may be of differing lengths (extra fields).  I want to have
> the standalone Python script to make the variables and then allow the user
> to sort the data based on the contents of the columns (i.e. pull out the
> records that match one or more criteria).
>   
#test.py
f = file("FOO.CSV","r")
txt = f.readlines()
f.close()

headers = txt[0].strip().split(",")
infotable = {}
txt.pop(0)
for x in range(len(headers)):
    infotable[headers[x]] = [y.split(",")[x].strip() for y in txt]
print infotable
#end of test.py

#output
{'PurgeModId': ['6', '6'], 'SW': ['RV0.6.5.27', 'RV0.6.5.27'], 'JobID': 
['392', '408'], 'Machine': ['1125785731', '1125785731'], 'Width': 
['279400', '279400'], 'CoatingFront': ['none', 'none'], 'AtreeNodeID': 
['1228', '75'], 'Finish': ['regular', 'regular'], 'PurgeSuccess': ['N', 
'Y'], 'PPM': ['120', '120'], 'additional_info': ['', ''], 'CoatingBack': 
['none', 'none'], 'PropID': ['44366', '69206'], 'Full_cfg': 
['_SFM20_IOT7_SFM7_BFM20_BFM2', '_SFM20_IOT7_SFM7_BFM20_BFM2'], 
'MediaID': ['527', '29'], 'PurgeStarted': ['Y', 'N'], 'NameJobCfg': 
['_SFM20_IOT7_SFM7_BFM20_BFM2', '_SFM20_IOT7_SFM7_BFM20_BFM2'], 
'PurgeStopModId': ['5', ''], 'plex': ['Simplex', 'Duplex'], 'Grain': 
['y', 'y'], 'debuglog': ['DebugMsgLog.2006_05_24.07_48_00', 
'DebugMsgLog.2006_05_31.14_33_25A'], 'ModIdJobCfg': ['_2_3_4_5_6', 
'_2_3_4_5_6'], 'Weight': ['75', '75'], 'Color': ['white', 'white'], 
'PurgeCauseFaultID': ['927', '1003'], 'Caliper': ['104', '104'], 
'Height': ['431800', '431800'], 'PurgePrepared': ['Y', 'Y'], 
'FinisherCfg': ['DUAL_BFM', 'DUAL_BFM'], 'Drilled': ['FALSE', 'FALSE']}

> The final product would allow me to select the input file, specify some thing
> like the value of the "PPM" or "Grain" (and combinations thereof), and
> write the output to a new CSV file.  The last bit would be some math on the contents of a couple of the fields.
>   
You mean you want to be able to make a new CSV file using the contents 
of the old one, or create an entirely new one using just stuff you need?
Please clarify here.
> Ralph
Luke





More information about the Tutor mailing list