[Tutor] Converting a string into dictionary references

Christian Witts cwitts at compuscan.co.za
Mon Apr 23 15:59:16 CEST 2012


On 2012/04/23 03:46 PM, Gerhardus Geldenhuis wrote:
> Not quite,
>
> I have csvfile1:
> column1, column2, column3, ... column200
>
> That is my raw data but I want to use only 5 columns for example in a 
> specific application.
> I thus want a file with the following:
> column33,column1,column5
>
> I then want to read the original csv file and write a new csv file 
> with the requested columns only.
>
> Does that make more sense?
>
> Regards
>
> On 23 April 2012 14:41, Joel Goldstick <joel.goldstick at gmail.com 
> <mailto:joel.goldstick at gmail.com>> wrote:
>
>     On Mon, Apr 23, 2012 at 8:56 AM, Gerhardus Geldenhuis
>     <gerhardus.geldenhuis at gmail.com
>     <mailto:gerhardus.geldenhuis at gmail.com>> wrote:
>     > Hi
>     > Appologies about the subject I could not think of a better
>     description.
>     >
>     > I have this very simple function:
>     >
>     > def readcsvfile(filename):
>     >   f = open(filename, 'ro')
>     >   csvdata = csv.DictReader(f)
>     >   for row in csvdata:
>     >     print row["column3"]+','+row["column1"]
>     >
>     > I have another inputfile that will be comma separated list of
>     values.
>     > Eg:
>     > column3,column4,column10
>     >
>     > The idea is that I use this inputfile to tranform the original
>     csv file. I
>     > thus want a new file with only the specified columns. I am sure
>     there is an
>     > elegant way of doing this but I am not sure how to convert my print
>     > statement into something more dynamic. Any pointers would be
>     appreciated.
>     >
>     > Regards
>     >
>     > --
>     > Gerhardus Geldenhuis
>     >
>     > _______________________________________________
>     > Tutor maillist  - Tutor at python.org <mailto:Tutor at python.org>
>     > To unsubscribe or change subscription options:
>     > http://mail.python.org/mailman/listinfo/tutor
>     >
>
>     So you want to take 'column1' and get back 1?, 'column10' and get
>     back 10?
>
>     s = 'column1'
>     i = int(s[6:])
>
>     This will only work if your strings all start with the text 'column'
>
>     --
>     Joel Goldstick
>
>
>
>
> -- 
> Gerhardus Geldenhuis
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
If you don't need to use Python and are on a *nix machine you can use 
cut to do the work for you for eg and it might simplify your workflow.

-d specifies the delimiter of the file, in this case a comma
-f specifies the fields you want, in this case 1 to 3, 5, and 10
cut -d, -f1-3,5,10 input_filename > output_filename

-- 

Christian Witts
Python Developer
//
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120423/cf48e92f/attachment.html>


More information about the Tutor mailing list