Я использую Python 2.7 и SDK v2 EBayможет кто-нибудь объяснить, как я могу вытащить определенные поля из Dict в питоне
У меня есть ДИКТ хранимый и Im писать его в файл CSV (пытаюсь), проблема это я только хочу некоторые поля я не хочу, чтобы выписать каждый столбец
вот мой ДИКТ
{'itemSearchURL': 'http://www.ebay.co.uk/sch/i.html?LH_ItemCondition=1&_nkw=OMP+OD%2F1989&_ddo=1&_ipg=1&_pgn=1', 'paginationOutput': {'totalPages': '187', 'entriesPerPage': '1', 'pageNumber': '1', 'totalEntries': '187'}, 'ack': 'Success', 'timestamp': '2016-11-15T15:52:01.356Z', 'searchResult': {'item': [{'itemId': '322324027874', 'subtitle': '100% GENUINE OMP STEERING WHEEL - NOT A CHEAP FAKE COPY', 'globalId': 'EBAY-GB', 'title': 'OD/1989/NN OMP TRECENTO UNO SPORTS STEERING WHEEL 300mm in BLACK POLYURETHANE', 'country': 'GB', 'primaryCategory': {'categoryId': '40195', 'categoryName': 'Steering Wheels & Boss Kits'}, 'autoPay': 'false', 'galleryURL': 'http://thumbs3.ebaystatic.com/m/miOhEO1pDb2cff4pPcZpwIQ/140.jpg', 'shippingInfo': {'shippingType': 'Free', 'shipToLocations': ['AU', 'Americas', 'Europe', 'Asia'], 'shippingServiceCost': {'_currencyId': 'GBP', 'value': '0.0'}}, 'location': 'United Kingdom', 'topRatedListing': 'false', 'viewItemURL': 'http://www.ebay.co.uk/itm/OD-1989-NN-OMP-TRECENTO-UNO-SPORTS-STEERING-WHEEL-300mm-BLACK-POLYURETHANE-/322324027874', 'sellingStatus': {'currentPrice': {'_currencyId': 'GBP', 'value': '78.28'}, 'timeLeft': 'P25DT0H21M7S', 'convertedCurrentPrice': {'_currencyId': 'GBP', 'value': '78.28'}, 'sellingState': 'Active'}, 'paymentMethod': 'PayPal', 'isMultiVariationListing': 'false', 'condition': {'conditionId': '1000', 'conditionDisplayName': 'New'}, 'listingInfo': {'listingType': 'FixedPrice', 'gift': 'false', 'bestOfferEnabled': 'false', 'startTime': '2016-11-10T16:13:08.000Z', 'buyItNowAvailable': 'false', 'endTime': '2016-12-10T16:13:08.000Z'}}], '_count': '1'}, 'version': '1.13.0'}
здесь мой раздел кода Thats не работает
def WriteDictToCSV(csv_file,csv_columns,dict_data):
try:
with open(csv_file, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in dict_data:
writer.writerow(data)
except IOError as (errno, strerror):
print("I/O error({0}): {1}".format(errno, strerror))
return
csv_columns = ['itemId','title','subtitle','viewItemURL']
currentPath = os.getcwd()
csv_file = currentPath + "/csv/items.csv"
WriteDictToCSV(csv_file,csv_columns,response.dict())
это моя ошибка
Traceback (most recent call last):
File "/home/richard/workspace/ebay title search by csv/learning2.py", line 56, in <module>
WriteDictToCSV(csv_file,csv_columns,response.dict())
File "/home/richard/workspace/ebay title search by csv/learning2.py", line 45, in WriteDictToCSV
writer.writerow(data)
File "/usr/lib64/python2.7/csv.py", line 148, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "/usr/lib64/python2.7/csv.py", line 144, in _dict_to_list
", ".join(wrong_fields))
ValueError: dict contains fields not in fieldnames: i, t, e, m, S, e, a, r, c, h, U, R, L
Я понимаю, что я не хватает имен столбцов, но на самом деле не знаю, как разобрать биты я хочу из Словаре я был thinkink о преобразовании Dict в XML и использование etree как видно некоторые руководства по сети, как сделать это, но на самом деле хотел бы узнать, как работать с Dict, как это
Я также попытался с цикл, но это просто дал мне ошибки не говоря никакой ценности
for item in response.dict()['searchResult']['item']:
print "ItemID: %s" % item['itemId'].value
print "Title: %s" % item['title'].value
print "CategoryID: %s" % item['primaryCategory']['categoryId'].value
Я изо всех сил пытаюсь размахивать головой вокруг контейнера
Если я делаю цикл for через dict, я могу видеть ключи и значения.
mydata = response.dict()
for key, value in mydata.items():
print key, value
, которые дают мне выход в ключах
Я думал о перечислении их и извлекая один ключ, но читал, что словари не упорядочены так, что выйдет с разными результатами это правда.
Спасибо за пояснения, что сделало вещи очень ясно, я дам в минуту –