Comment puis-je analyser ce rapport d'erreur Amazon avec une expression régulière?

StackOverflow https://stackoverflow.com/questions/756760

  •  09-09-2019
  •  | 
  •  

Question

Lorsque vous soumettez un flux de produits Amazon, il retournera un rapport d'erreur qui contiendra des suggestions pour des produits qui ne correspondaient pas, comme suit:

18  998 8042    Error   "SKU '998'ASIN B0001FSZ6K  'item_name' Merchant value: 'Promax Nutrition Promax Bar - Mocha Blast' Amazon catalog value: 'Promax Bars, Mocha Blast 12 bars'.   ASIN B00024D3HQ  'manufacturer' Merchant value: 'Promax Nutrition' Amazon catalog value: 'PROMAX'  'item_name' Merchant value: 'Promax Nutrition Promax Bar - Mocha Blast' Amazon catalog value: 'Promax Gourmet Bar Mocha Blast 12 bars'."

Dans cet exemple, la « valeur marchande: » est ce qui a été soumis et « valeur catalogue Amazon: ». Est un match serré

Je suis en train d'extraire ces valeurs afin que nous puissions ajuster notre soumission d'alimentation et les éléments erronés renverrons. Je l'ai piraté ensemble cette regex:

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

Cela fonctionne presque. Je peux tirer le groupe 3 et 7 et ont mes valeurs ... parfois. Malheureusement, quelques-unes des suggestions ressemblent à:

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

Alors la tique va briser le match. Je suppose que je peux changer le match final à « « » et ignorer les « » s », mais je ne sais pas si mon regex est du tout efficace et je sais qu'il est susceptible de se briser sur les cas marginaux.

Modifier pour préciser:

Les données que je suis en train de faire serait:

SKU (998 dans le premier exemple) puis pour chaque suggestion: Champ (itemname ou fabricant) notre valeur d'Amazon valeur suggérée

Alors, ce serait:

998 | itemname | Promax Nutrition Promax Bar - Explosion Mocha | Bars Promax, moka souffle 12 bars

Était-ce utile?

La solution

Les références que j'ai pu trouver sur le web pour ce genre de message d'erreur Amazon afficher le format comme suit:

Définition:

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

Exemple:

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.”

Il me semble que vous faites un peu de traitement sur elle pour convertir les smart guillemets ( et ) à des guillemets simples. Si vous allez le faire, vous devrez échapper en quelque sorte vous apostrophes. Il peut être plus facile de les convertir en des guillemets doubles au lieu de simple, ou tout simplement l'analyser avec les guillemets intelligents intacts.

Il est une expression régulière simple si vous laissez les seuls intelligents guillemets, mais impossible si vous les convertir à guillemets simples et ne faites rien à l'intérieur des chaînes apostrophes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top