如何解析此报告制表符分隔的响应?亚马逊 MWS
How can I parse this report tab-delimited response? Amazon MWS
我正在尝试使用亚马逊 MWS 制作网络应用程序。用户可以在此应用中添加、列出、删除他们的产品,还可以列出他们的订单。
为了列出他们的产品,我尝试将报告 API 与“_GET_MERCHANT_LISTINGS_DATA_”一起使用。但是这种方法 returns 制表符分隔的响应非常糟糕。而且当我使用 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_”报告中获得更好的结果?
或者我如何解析这个制表符分隔的字符串?
谢谢。
从亚马逊获取批量数据确实有两种选择,tab-delimited 和 xml。 tab-delimited 实际上读入 Excel 非常好,将值拆分为可用格式的例程非常简单。不幸的是,亚马逊不会在每份报告中为您提供 XML 或平面文件选项,因此在大多数情况下您必须混合使用两者。
首先,您的标题表明您需要列出所有有效和无效的列表。这将是报告的组合。如果您想要 'all inclusive' 包括问题列表、有效列表、隐藏列表和已取消列表,您将需要三份报告:
- _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
}
这是我使用亚马逊库存报告的一段代码中的示例。基本上,我验证 headers 是我所期望的(表明报告格式没有改变),然后我拆分,清理白色 space,并处理拆分中的每个元素。
Python拆分方法:
Python Split
或者,您可以获取整个流并将其直接粘贴到 excel 电子表格中,因为 Excel 了解如何在制表符上定界。
编辑
请注意,在我的代码示例中,我将 'delimiters' 传递给拆分例程,但我从未定义它。它被定义为 char[] delimiters = new char[] { '\t' };
我正在尝试使用亚马逊 MWS 制作网络应用程序。用户可以在此应用中添加、列出、删除他们的产品,还可以列出他们的订单。
为了列出他们的产品,我尝试将报告 API 与“_GET_MERCHANT_LISTINGS_DATA_”一起使用。但是这种方法 returns 制表符分隔的响应非常糟糕。而且当我使用 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_”报告中获得更好的结果?
或者我如何解析这个制表符分隔的字符串?
谢谢。
从亚马逊获取批量数据确实有两种选择,tab-delimited 和 xml。 tab-delimited 实际上读入 Excel 非常好,将值拆分为可用格式的例程非常简单。不幸的是,亚马逊不会在每份报告中为您提供 XML 或平面文件选项,因此在大多数情况下您必须混合使用两者。
首先,您的标题表明您需要列出所有有效和无效的列表。这将是报告的组合。如果您想要 'all inclusive' 包括问题列表、有效列表、隐藏列表和已取消列表,您将需要三份报告:
- _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
}
这是我使用亚马逊库存报告的一段代码中的示例。基本上,我验证 headers 是我所期望的(表明报告格式没有改变),然后我拆分,清理白色 space,并处理拆分中的每个元素。
Python拆分方法: Python Split
或者,您可以获取整个流并将其直接粘贴到 excel 电子表格中,因为 Excel 了解如何在制表符上定界。
编辑
请注意,在我的代码示例中,我将 'delimiters' 传递给拆分例程,但我从未定义它。它被定义为 char[] delimiters = new char[] { '\t' };