OK I am lost ;(
I changed the code to:
>>> reader = csv.reader(open("countries.csv"), delimiter=";")
>>> for row in reader:
... print row
...
['bi', 'Burundi']
['km', 'Comoros']
['dj', 'Djibouti']
['er', 'Eritrea']
...
Now each row is a list with two items each.
But when I do this:
>>> dic = []
>>> for row in reader:
... newdic.append({row[0]: row[1]})
...
>>> dic
[]
I get an empty dictionary
-------- Original Message --------
From: Tim Golden <[email protected]>
Apparently from: [email protected]
To:
Cc: [email protected]
Subject: Re: [Tutor] renaming files within a directory
Date: Sun, 26 Jul 2009 18:32:43 +0100
> [email protected] wrote:
> > Here is what I have so far, but I get stuck on the mapping of the filename
> > with the csv file.
> >
> >>>> import os
> >>>> files = [file for file in os.listdir(os.getcwd()) if
> >>>> file.endswith('svg')]
> >>>> files
> > ['Flag_of_Abkhazia.svg', 'Flag_of_Afghanistan.svg', 'Flag_of_Albania.svg',
> > 'Flag_of_Algeria.svg', 'Flag_of_Andorra.svg', 'Flag_of_Angola.svg',
> > 'Flag_of_Antigua_and_Barbuda.svg', 'Flag_of_Argentina.svg',
> > 'Flag_of_Armenia.svg', 'Flag_of_Australia.svg']
> >
> >>>> import csv
> >>>> reader = csv.reader(open("country.csv"))
> >>>> for row in reader:
> > ... print row
> >
> > ['"km";"Comoros"']
> > ['"dj";"Djibouti"']
> > ['"er";"Eritrea"']
> > ['"et";"Ethiopia"']
> > ....
> >
> > Here is where I am at.
> > Not sure how to map the two.
>
>
> OK. Good stuff so far. You may not actually need
> that auxiliary list of files, but no problem really.
>
> Are you familiar with a dictionary in Python? It maps
> a key to a value. Here, you want the long names to
> be the keys and the short names to be values. If you
> were putting them together by hand (as a constant)
> it would look something like this:
>
> countries = {
> "Comoros" : "km",
> "Ethiopia" : "et",
> }
>
> and you could look up like this:
>
> ethiopia_tld = countries['Ethiopia']
>
> So what you have to do is to use one of the dictionary
> constructors (hint: help (dict)) to create a dictionary
> out of the list of lists which you csv reader produced.
> You'll need to swap the elements round as the csv has
> the code first, but you want the country first.
>
> Does that take you any further forward?
>
> TJG
> _______________________________________________
> Tutor maillist - [email protected]
> http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor