Pythonの初心者、初心者の開発者、初めての呼び出し元
私はいくつかのJSONを呼び出し、関連データをcsvとして解析しています。多くが未入力であるため、デフォルトのキーで中間json Dictファイルに入力する方法がわかりません。コンテンツをcsvに解析しようとすると、結果はKeyErrorになります。アドバイスをお願いします!
ありがとう。
更新:みんなありがとう! (メーカー)の「NoneType」エラーが表示されるようになりました:
import urllib2, json, csv, sys, os, codecs, re
from collections import defaultdict
output = 'bb.csv'
csv_writer = csv.writer(open(output, 'w'))
header = ['sku', 'name', 'description', 'image', 'manufacturer', 'upc', 'department', 'class', 'subclass']
csv_writer.writerow(header)
i=1
while i<101:
print i
bb_url = urllib2.Request("http://api.remix.bestbuy.com/v1/products(sku=*)?show=sku,name,description,image,manufacturer,upc,department,class,subclass&format=json&sort=sku.asc&page=" + str(i) + "&pageSize=100&apiKey=*****************")
bb_json = json.load(urllib2.urlopen(bb_url))
print bb_json
for product in bb_json['products']:
row = []
row.append(product['sku'])
if product['name']:
row.append(str((product['name']).encode('utf-8')))
else:
row.append("")
row.append(str(product.get('description',"")))
row.append(str(product['image'])+ " ")
if product['name']:
row.append(str(product.get('manufacturer',"").encode('utf-8')))
else:
row.append("")
row.append(str(product.get('upc','').encode('utf-8')))
row.append(str((product['department']).encode('utf-8')))
row.append(str((product['class']).encode('utf-8')))
row.append(str((product['subclass']).encode('utf-8')))
csv_writer.writerow(row)
i = i+1
キーを直接参照する代わりに、your_dict.get(key, "default value")
を使用できます。
「デフォルト」の引数名を使用しないでください。たとえば、デフォルト値として1.0が必要な場合、
rank = dict.get(key, 1.0)
詳細については、 TypeError:get()はキーワード引数を取りません
デフォルト値を定義できず、他の何かをしたい場合(または単にエントリを省略した場合):
if key in dict:
rank = dict[key]
else:
# do something or just skip the else block entirely
次のような構文を使用できます:product.get("your field", "default value")