2016-03-07 1 views
1

J'essaie de faire une application web avec Amazon MWS. L'utilisateur peut ajouter, liste, supprimer leurs produits dans cette application et également la liste de leurs commandes.Comment puis-je analyser cette réponse délimitée par des tabulations de rapport? Amazon MWS

Pour la liste de leurs produits, j'essaie d'utiliser l'API Reports avec "_GET_MERCHANT_LISTINGS_DATA_". Mais cette méthode retourne avec une très mauvaise réponse délimitée par des tabulations. Et aussi quand je fais la demande avec la méthode RequestReport, Il envoie le rapport de listes au propriétaire du magasin.

Ceci est l'exemple de réponse factice:

b'item-name\titem-description\tlisting-id\tseller-sku\tprice\tquantity\topen-date\timage-url\titem-is-marketplace\tproduct-id-type\tzshop-shipping-fee\titem-note\titem-condition\tzshop-category1\tzshop-browse-path\tzshop-storefront-feature\tasin1\tasin2\tasin3\twill-ship-internationally\texpedited-shipping\tzshop-boldface\tproduct-id\tbid-for-featured-placement\tadd-delete\tpending-quantity\tfulfillment-channel\nPropars deneme urunu 2 CD-ROM CD-ROM\tThis is a development test product\t0119QL9BRT8\tPARS12344321\t0.5\t9\t2016-01-19 05:26:44 PST\t\ty\t4\t\t\t11\t\t\t\tB01ATBY2NA\t\t\t1\t\t\t8680925084020\t\t\t0\tDEFAULT\n'

Est-ce qu'il ya quelqu'un connaît une autre méthode pour l'inscription des produits dans un magasin, ou que proposez-vous pour prendre de meilleurs résultats de rapport « _GET_MERCHANT_LISTINGS_DATA_ »?

Ou comment puis-je analyser cette chaîne délimitée par des tabulations?

Merci.

Répondre

1

Vous avez vraiment deux options pour obtenir des données en vrac à partir d'Amazon, délimité par des tabulations et xml. En fait, les lectures délimitées par des tabulations dans Excel sont très bien faites, et les routines permettant de diviser les valeurs en format utilisable sont assez simples. Malheureusement, Amazon ne vous donne pas l'option de fichier XML ou plat sur chaque rapport, vous devez donc utiliser un mélange des deux dans la plupart des cas.

Tout d'abord, votre titre indique que vous devez lister toutes les listes actives et inactives. Cela va être une combinaison de rapports. Si vous voulez un « tout compris » y compris la liste des problèmes, des listes actives, listes cachées et des listes annulées, vous aurez besoin de trois rapports:

  • _GET_MERCHANT_LISTINGS_DATA_
  • _GET_MERCHANT_CANCELLED_LISTINGS_DATA_
  • _GET_MERCHANT_LISTINGS_DEFECT_DATA_

Toutes ces Le format de fichier est plat, donc vous aurez une méthode cohérente pour lire les données. Dans C#, vous lisez simplement une ligne, divisez cette ligne et lisez chaque valeur du tableau. Il y aura une méthode similaire pour effectuer cela en python, ce qui est très probablement bien documenté ici sur SO. La méthode C# ressemblerait à quelque chose comme ceci:

while ((line = file.ReadLine()) != null) 
{ 
    if (counter == 0) 
    { 
     string[] tempParts = line.Split(delimiters); 
     for (int i = 0; i < tempParts.Length; i++) 
     { 
      tempParts[i] = tempParts[i].Trim(); //Clean up remaining whitespace. 
     } 
     //Try and verify headers have not changed. 
     if (!isReportHeaderValid(tempParts)) 
     { 
      reportStatus.IsError = true; 
      reportStatus.Exception = new Exception("Report Column headers were not validated!!!!"); 
     return; 
     } 
     counter++; 
     continue; 
    } 
    counter++; 
    string[] parts = line.Split(delimiters); 
    for (int i = 0; i < parts.Length; i++) 
    { 
     parts[i] = parts[i].Trim(); //Clean up remaining whitespace. 
    } 
    //Do stuff with parts[1], parts[2] etc 
} 

Ceci est un exemple d'un de mes morceaux de code de travail avec le rapport d'inventaire Amazon. Fondamentalement, je vérifie que les en-têtes sont ce que je m'attendrais à ce qu'ils soient (indiquant le format de rapport n'a pas changé) et puis je divise, nettoie l'espace blanc, et travaille avec chaque élément de la division.

méthode Python division: Python Split

Sinon, vous pouvez probablement prendre tout le flux et le coller directement dans une feuille de calcul Excel depuis Excel comprend comment délimiter les onglets.

Modifier

Juste une note, dans mon exemple de code je passe '' délimiteurs pour la routine split, mais je ne le définir.Elle est définie comme char[] delimiters = new char[] { '\t' };

0

Par exemple l'utilisation:

lines = str(result.decode("utf-8")).split('\n') 
    for line in lines: 
     columns = str(line).split('\t') 
     print(columns)