On Mar 24, 6:49 pm, Tim Chase <python.l...@tim.thechases.com> wrote: > On 2013-03-24 09:03, Dave Angel wrote: > > > >> <SNIP all those quoted lines doubled by anti-social googlegroups> > > [THANK YOU!] > > > > Sorry my typo in the output here is the correct output that i > > > need : > > > > [('John Konon', 'Ministry of moon Walks', '4567882', '27-Feb'), > > > ( 'Stacy Kisha', 'Ministry of Man Power', '1234567', 17-Jan')] > > > > the difference is that i need a [(row two), (row three), (row > > > fouth)] . I do not want to display row one which is ['Name', ' > > > Address', 'Telephone', 'Birthday'] > > > I had to add a delimiter= to accomodate the fact that your data is > > tab- separated. > > Since it has headers, it might make more sense for readability to use > a DictReader: > > f = file("source.txt", "rb") > r = csv.DictReader(f, delimiter='\t') > for row in r: > print row["Name"], row["Address"], ... > > However, if it's just stripping off the first row and operating > directly on the resulting data, then I'd just be tempted to do > > r = csv.reader(f, delimiter='\t') > r.next() # discard the headers, or optionally store them > for row in r: > ... > > -tkc
After doing: >>> import csv >>> original = file('friends.csv', 'rU') >>> reader = csv.reader(original, delimiter='\t') Stripping of the first line is: >>> list(reader)[1:] If for some reason you want to tuplify each row do either: >>> [tuple(row) for row in list(reader)[1:]] Or else >>> map(tuple,list(reader)[1:]) I usually prefer comprehensions to maps. Here though, the map is shorter. Your choice Then you can of course make your code more performant thus: >>> reader.next() >>> (tuple(row) for row in reader) In the majority of cases this optimization is not worth it In any case, strewing prints all over the code is a bad habit (except for debugging). -- http://mail.python.org/mailman/listinfo/python-list