Read csv file and create a new file

Neil Cerutti neilc at norwich.edu
Thu Feb 28 15:11:46 EST 2013


On 2013-02-28, io <maroso at libero.it> wrote:
> I'm a noob in python but my code looks like this :
>
>
> import json
> import urllib
> import csv

I take back what I said about the csv module. It appears you need
access to at least one of the data fields, so this is a good use
of csv.

> url = "http://bitcoincharts.com/t/markets.json"
> response = urllib.urlopen(url);
> data = json.loads(response.read())
>
> f = open("/home/io/markets.csv","wb")
> c = csv.writer(f)
>
> #apre un file di testo e legge il contenuto del file inserendolo in una 
> stringa
> esclusioni = open('/home/io/exclusions.txt','r')
> string = ""

The list of exclusions should be stored in a set or list, not a
string. This is your main "bug."

esclusioni_file = open('/home/io/exclusions.txt','r')
esclusioni = []

> while 1:
>     line = esclusioni.readline()
>     if not line:break
>     string += line
> print string

Iterate over the file instead of looping manually.

 for line in esclusioni_file:
     esclusioni.append(line.strip())
 print(esclusioni)

> # write headers
> c.writerow(["Currency","Symbol","Bid", "Ask", "Volume"])
>
> for d in data:
>     if d["currency"] <> "SLL":  #esclude la valuta di secondlife SLL
>         if d["bid"] is not None and d["ask"] is not None:
>             if not any(str(d["symbol"]) in s for s in string):

Why are you checking d["symbol"] instead of d["currency"]? Maybe
I misunderstood the question.

Test like this for either set or list container type. Use
whichever json field is appropriate:

              if d["currency"] not in esclusioni:

>                 c.writerow([str(d["currency"]),str(d["symbol"]),str(d
> ["bid"]),str(d["ask"]),str(d["currency_volume"])])
>     
> esclusioni.close()

-- 
Neil Cerutti



More information about the Python-list mailing list