我正在尝试使用Amazon MWS制作Web应用程序。用户可以在此应用中添加,列出,删除其产品,还可以列出其订单。

为了列出他们的产品,我尝试将Reports API与“ _GET_MERCHANT_LISTINGS_DATA_”一起使用。但是此方法返回的结果带有非常糟糕的制表符分隔响应。而且,当我使用RequestReport方法发出请求时,它会将清单报告发送给商店所有者。

这是虚拟响应示例:

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'

是否有人知道在商店中列出产品的另一种方法,或者您建议如何从“ _GET_MERCHANT_LISTINGS_DATA_”报告中获得更好的结果?

或者如何解析此制表符分隔的字符串?

谢谢。

最佳答案

您确实有两个选项可用于从亚马逊获取批量数据,即制表符分隔和xml。制表符分隔符实际上在Excel中很好地读取,并且将值拆分为可用格式的例程非常简单。不幸的是,亚马逊并没有在每个报告中为您提供XML或平面文件选项,因此在大多数情况下,您必须同时使用两者。

首先,您的标题指示您需要列出所有活动清单和非活动清单。那将是报告的组合。如果要“全包”包括问题清单,活动清单,隐藏清单和已取消清单,则需要三个报告:


_GET_MERCHANT_LISTINGS_DATA_
_GET_MERCHANT_CANCELLED_LISTINGS_DATA_
_GET_MERCHANT_LISTINGS_DEFECT_DATA_


所有这些都是平面文件格式,因此您将具有读取数据的一致方法。在c#中,您只需读取一行,拆分该行并读取每个数组值。将有类似的方法在python中执行此操作,因此很可能在SO上对此进行了很好的记录。 c#方法如下所示:

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
}


这是我使用Amazon Inventory报告的其中一段代码中的一个示例。基本上,我会验证标头是否是我期望的(指示报表格式没有更改),然后拆分,清理空白并使用拆分中的每个元素。

Python分割方法:
Python Split

另外,由于Excel知道如何在选项卡上定界,因此您可以将整个流直接粘贴到excel电子表格中。

编辑

请注意,在我的代码示例中,我将'delimiters'传递给split例程,但我从未定义过它。定义为char[] delimiters = new char[] { '\t' };

关于python - 如何解析此报表制表符分隔的响应?亚马逊MWS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35839869/

10-09 07:44