出力が5列の.csvになるようにスクリプトを作成しようとしています。2列のデータ、空の列、さらに2列のデータです。これが私が得たものであり、これが私が欲しいものです。完全を期すために、ここに私のすべてのコードがあります。
import requests
import csv
item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'}
item_ids = item_dictionary.keys()
url_template = 'http://www.grandexchangecentral.com/include/gecgraphjson.php?jsid=%r'
sites = []
for i in range(0, len(item_ids)):
result = url_template % item_ids[i]
sites.append(result)
def data_grabber(item):
url = item
r = requests.get(url, headers={'Referer': 'www.grandexchangecentral.com'})
data = r.json
prices = [i[1] for i in data]
return prices
data = map(data_grabber, sites)
names = item_dictionary.values()
def writer(item):
q = data.index(item)
headers = [names[q], 'Percent Change', None]
a = data[q]
percents = [100.0 * a1 / a2 - 100 for a1, a2 in zip(a[1:], a)]
percents.insert(0, None)
f = zip(data[q], percents)
myfile = open('prices.csv', 'wb')
wr = csv.writer(myfile)
wr.writerow(headers)
wr.writerows(f)
myfile.close()
z = [writer(x) for x in data]
何が起こっているのかというwriter(item)
と、2つの列が書き込まれ、次の反復でz
それらの列が上書きされると思います。編集:私myfile.close()
は関数にあることに気づきました。それはそれを説明するでしょう、しかし私はそれを修正する方法を知りません。