我正在尝试使用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/