【问题标题】:How do I parse this Amazon error report with a regular expression?如何使用正则表达式解析此 Amazon 错误报告?
【发布时间】:2009-04-16 15:48:16
【问题描述】:

当您向亚马逊提交产品提要时,它会返回一个错误报告,其中包含对不匹配产品的建议,如下所示:

18 998 8042 错误“SKU '998'ASIN B0001FSZ6K 'item_name' 商户值:'Promax Nutrition Promax Bar - Mocha Blast' 亚马逊目录值:'Promax Bars, Mocha Blast 12 bar'。ASIN B00024D3HQ 'manufacturer' 商户值:'Promax Nutrition 亚马逊目录值:'PROMAX' 'item_name' 商户值:'Promax Nutrition Promax Bar - Mocha Blast' 亚马逊目录值:'Promax Gourmet Bar Mocha Blast 12 条'。

在此示例中,“Merchant value:”是提交的内容,“Amazon catalog value:”是匹配项。

我正在尝试提取这些值,以便我们可以调整我们的提要提交并重新发送错误的项目。我已经破解了这个正则表达式:

(Merchant value\:) (')(.+?)(')( Amazon catalog value\: )(')(.+?)(ASIN)

这几乎可行。我可以拉第 3 组和第 7 组,并拥有我的价值观……有时。不幸的是,一些建议看起来像:

Merchant value: 'Barleans' Amazon catalog value: 'Barlean's Organic Oils'

所以滴答声会破坏比赛。我假设我可以将结束匹配更改为“'”并忽略“'s”,但我不确定我的正则表达式是否有效,而且我知道它很容易在极端情况下中断。

编辑澄清:

我想要获取的数据是:

SKU(第一个示例中为 998) 然后对于每个建议: 字段(项目名称或制造商) 我们的价值 亚马逊的建议价值

所以它会是这样的:

998 |商品名 | Promax Nutrition Promax 酒吧 - 摩卡咖啡 | Promax 酒吧,Mocha Blast 12 酒吧

【问题讨论】:

  • 您的示例中似乎有两组不同的值,您是要捕获两者,还是只捕获第一个?
  • 每一行都会有多个建议。基本上每一行对应一个 sku,亚马逊会返回制造商、商品名称等的值……通常每行都有几个建议。我想解析并保存每个建议,然后在解析后处理选择。
  • 那么当目录值中有一个撇号时,亚马逊根本不会转义它?这不是“Barlean 的有机油”吗?
  • 在此之前您是否以某种方式处理亚马逊错误?从我的搜索来看,原始错误消息似乎使用智能引号来包围值,而不是单引号。你换了吗?
  • @Lance Kidwell 你可以编辑你的问题以显示实际的消息格式(换行符和所有 - 只需使用
     标签)这可能有助于构建正确的正则表达式。

标签: regex amazon


【解决方案1】:

我在网上找到的此类 Amazon 错误消息的参考资料显示格式如下:

定义:

<@foreach ASIN><ASIN> <@foreach attribute that differs><ATTRIBUTE> Merchant value: “<merch val>” Amazon catalog value: “<Amazon catalog value>”;</foreach>.</foreach>

示例:

SKU “a1b2d4” could correspond to multiple ASINs in the Amazon catalog. Please review the possible matches below.

If your product is the same as the product on one of these detail pages, please modify your product data to reflect the Amazon catalog values and resubmit. If your product is different than what is on these detail pages, please provide more data and resubmit.

ASIN B1234567890 “UPC” Merchant value: “12345678901” Amazon catalog value: “00000000000” “TITLE” Merchant value: “Good Bad Ugly” Amazon catalog value: “The Good, the Bad, and the Ugly”.

ASIN B0987654321 “UPC” Merchant value: “12345678901” Amazon catalog value: “12345678901” “TITLE” Merchant value: “Good Bad Ugly” Amazon catalog value: “For a few dollars more.”

在我看来,您正在对其进行一些处理以将智能引号()转换为单引号。如果你要这样做,你必须自己以某种方式逃避撇号。将它们转换为双引号而不是单引号可能更容易,或者只是用完整的智能引号解析它。

如果您不使用智能引号,这是一个简单的正则表达式,但如果您将它们转换为单引号并且不对字符串中的撇号执行任何操作,则这是不可能的。

【讨论】:

  • +1 用于查找。顺便说一句:即使原始帖子已被删除,您也可以编辑原始帖子而不是发布新答案。只需取消删除原件一秒钟,在新选项卡中单击“编辑”,然后再次将其删除。编辑您的资料,并在点击保存前立即取消删除。
  • 是的,我不确定是取消删除并使用现在不相关的 cmets 编辑旧的错误答案还是只发布一个新答案更好。我也总是忘记 10k+ 人可以看到已删除的,所以这样可能会让你更烦。
  • 我明白了。在过去的美好时光中,您至少可以删除自己帖子中的所有 cmets,但最近我认为他们改变了这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多