Roman wrote: > Dennis Lee Bieber wrote: > > On 4 Jul 2006 07:01:55 -0700, "Roman" <[EMAIL PROTECTED]> declaimed > > the following in comp.lang.python: > > > > > I would appreciate it if somebody could tell me where I went wrong in > > > the following snipet: > > > > > It would help if you gave a sample of the input data (three lines > > worth, say) AND an example of what the final output should be from those > > three lines. > > > > > for col in line: > > > p[:0].append(str(col)) > > > > As has been pointed out, as soon as you used the [:0], you created a > > local/temporary EMPTY slice of the original P, and you are appending one > > column's value to this temporary, which is then thrown away. > > import csv > > > > -=-=-=-=-=-=-=- PROGRAM > > p = [] > > > > fin = open("firearms.csv", "r") > > reader = csv.reader(fin, dialect="excel", quotechar='"', delimiter=",") > > > > for line in [reader.next() for i in range(7)]: > > p.append(line) > > > > fin.close() > > print p > > -=-=-=-=-=-=-=- OUTPUT > > [['Category', 'Model', 'Caliber', 'Serial #', 'Description', > > 'Accessories'], ['Air', 'Daisy 717 Pistol', '.177 pellet', '', '', ''], > > ['Air', 'Daisy/NRA PowerLine 953 Rifle', '.177 pellet', 'n/a', > > 'Micrometer Peep, "Globe" front (missing alternate inserts', 'Shooting > > sling'], ['Air', 'RWS Diana Model 54 "Air King" Rifle', '.22 pellet', > > '4022395', 'Hunting grade - >900fps', '2-7x BSA AOL scope'], ['Air', > > 'Gamo/NRA', '0.177', '', 'Hunting grade - ~1000fps; NRA markings on > > barrel, stock', '4x (BSA?) AOL scope, NRA badge'], ['Air', > > 'Walther/Crossman CP99 Pistol', '.177 pellet', '', 'CO2, repeater > > (currently magazine jams trigger/safety)', ''], ['Percussion', '? New > > Orleans Ace boot-pistol', '.36 lead', '', '', '']] > > -=-=-=-=-=-=-=- INPUT (just first seven lines) > > Category,Model,Caliber,Serial #,Description,Accessories > > Air,Daisy 717 Pistol,.177 pellet,,, > > Air,Daisy/NRA PowerLine 953 Rifle,.177 pellet,n/a,"Micrometer Peep, > > ""Globe"" front (missing alternate inserts",Shooting sling > > Air,"RWS Diana Model 54 ""Air King"" Rifle",.22 pellet,4022395,Hunting > > grade - >900fps,2-7x BSA AOL scope > > Air,Gamo/NRA,0.177,,"Hunting grade - ~1000fps; NRA markings on barrel, > > stock","4x (BSA?) AOL scope, NRA badge" > > Air,Walther/Crossman CP99 Pistol,.177 pellet,,"CO2, repeater (currently > > magazine jams trigger/safety)", > > Percussion,? New Orleans Ace boot-pistol,.36 lead,,, > > > > > > > > But your explanations are unclear... Maybe you wanted the first > > sublist to be all the first column, etc. > > > > -=-=-=-=-=-=-=- PROGRAM > > import csv > > > > p = None > > > > fin = open("firearms.csv", "r") > > reader = csv.reader(fin, dialect="excel", quotechar='"', delimiter=",") > > > > for line in [reader.next() for i in range(7)]: > > if not p: > > p = [[] for j in range(len(line))] > > for c in range(len(line)): > > p[c].append(line[c]) > > > > fin.close() > > print p > > -=-=-=-=-=-=-=- OUTPUT (same input) > > [['Category', 'Air', 'Air', 'Air', 'Air', 'Air', 'Percussion'], > > ['Model', 'Daisy 717 Pistol', 'Daisy/NRA PowerLine 953 Rifle', 'RWS > > Diana Model 54 "Air King" Rifle', 'Gamo/NRA', 'Walther/Crossman CP99 > > Pistol', '? New Orleans Ace boot-pistol'], ['Caliber', '.177 pellet', > > '.177 pellet', '.22 pellet', '0.177', '.177 pellet', '.36 lead'], > > ['Serial #', '', 'n/a', '4022395', '', '', ''], ['Description', '', > > 'Micrometer Peep, "Globe" front (missing alternate inserts', 'Hunting > > grade - >900fps', 'Hunting grade - ~1000fps; NRA markings on barrel, > > stock', 'CO2, repeater (currently magazine jams trigger/safety)', ''], > > ['Accessories', '', 'Shooting sling', '2-7x BSA AOL scope', '4x (BSA?) > > AOL scope, NRA badge', '', '']] > > -- > > Wulfraed Dennis Lee Bieber KD6MOG > > [EMAIL PROTECTED] [EMAIL PROTECTED] > > HTTP://wlfraed.home.netcom.com/ > > (Bestiaria Support Staff: [EMAIL PROTECTED]) > > HTTP://www.bestiaria.com/ > > below is the data I am trying to read > > "000004" "AS0042123BO" "AS 0042.123 ROYAL ELONG SEAT > BO" "001610" "A/S Fixtures" 0 $99.00 3.70 "" > "0042123" 11/20/2003 > "000024" "AS0042001BK" "AS 0042.001 ROYAL EL*DISC BY > MFG*BK" "001610" "A/S > Fixtures" 0 $99.00 8.00 "723085611663" "0042001" > 11/20/2003 > "000104" "CH130TTWH" "CH 130TT EL PLAS SEAT C/F W/C > WH" "207067" "Church Seats" 12 $25.00 6.75 "073088079961" > "130TT > 000" 12/28/1995 [...]
[Fixed top-posting] You can use a class rather than have lists of lists: ------------------------------------- print data = ''' id,category_id,description,price 0024,A1,cup,1.00 0025,A1,saucer,2.00 0026,A1,teapot,5.00''' class MyClass(object): id = None category_id = None description = None price = None def __init__(self, id=None, category_id=None, description=None, price=None): self.id = id self.category_id = category_id self.description = description self.price = price def __str__(self): return '%s - %s' % (self.id,self.description) myclass_collection = [] import csv reader = csv.reader( data.splitlines()[1:] ) firstline = reader.next() for line in reader: names_and_values = dict(zip(firstline,line)) c = MyClass(**names_and_values) myclass_collection.append( c ) for item in myclass_collection: print item ------------------------ 0024 - cup 0025 - saucer 0026 - teapot -- http://mail.python.org/mailman/listinfo/python-list