如何解析此报表制表符分隔的响应?亚马逊MW

2024-06-25 23:10:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Amazon MWS制作一个web应用程序。用户可以在此应用程序中添加、列出、删除他们的产品,也可以列出他们的订单。在

为了列出他们的产品,我尝试使用报表API与“\u 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'

有没有人知道另一种在商店里列出产品的方法,或者你有什么建议可以让“商家”报告的结果更好?在

或者如何解析这个制表符分隔的字符串?在

谢谢。在


Tags: 方法id应用程序amazon产品isrom报告
2条回答

从amazon获取批量数据实际上有两个选项:制表符分隔和xml。实际上,在Excel中,制表符分隔的读取非常好,将值拆分为可用格式的例程也非常简单。不幸的是,Amazon并没有为每个报表提供XML或flatfile选项,因此在大多数情况下,您必须同时使用这两者。在

首先,您的标题表明您需要列出所有活动和不活动的列表。这将是一个报告的组合。如果您想要一个“全方位”包括问题列表、活动列表、隐藏列表和取消列表,则需要三个报告:

  • _获取商户列表数据
  • _获取商户已取消登录物品数据
  • _获取商户清单缺陷数据

所有这些都是平面文件格式,因此您将有一个一致的方法来读取数据。在c中,您只需读取一行,将该行拆分并读取每个数组值。在python中也会有一个类似的方法来执行这一点,这里很可能有很好的文档说明。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库存报告的一段代码中的一个示例。基本上,我验证头是否是我所期望的(表明报告格式没有改变),然后我拆分,清理空白,处理split中的每个元素。在

Python拆分方法: Python Split

或者,您可以将整个流直接粘贴到excel电子表格中,因为excel了解如何在选项卡上进行分隔。在

编辑

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

例如使用:

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

相关问题 更多 >