python 中的解码字符串问题

Issue in decoding string in python

我有一组字符串需要解码。字符串格式因网站上的产品而异。所以它非常不可预测。下面给出了几个格式示例:

 1. longDescription":"\u003cul\u003e  \u003cli\u003eTender grill’d bites made " (unicode and symbol combination)

 2. longDescription":"Goodness You Can See™" (all decoded, to be picked as is)

 3. longDescription":"With a wide variety of headphones,  \u003cbr /\u003e \u003cb\u003e\u003cbr /\u003eBlackWeb Flat CAT6 Network Cable:\u003c/b\u003e \u003cbr /\u003e \u003cul\u003e  \u003cli\u003eFlat CAT6 Network Cable\u003c/li\u003e  \u003cli\u003eLength: 14'\u003c/li\u003e  \u003cli\u003eUltra-slim design\u003c/li\u003e  \u003cli\u003e1GBPS"  (all unicode)

基本上,我想从 https://www.walmart.com/ip/Friskies-Gravy-Wet-Cat-Food-Warm-d-Serv-d-Grill-d-Bites-With-Shrimp-3-5-oz-Pouch/842464118

等产品中提取这个长描述键(后端)或(前端的项目符号列表)

我试过以下代码:

if '\u' in longdescription:
   try:
       #temp['Key_Features'] =longdescription
       temp['Key_Features'] =longdescription.decode("unicode-escape").encode()
   except Exception as e:
       temp['Key_Features'] =HTMLParser.HTMLParser().unescape(longdescription)
else:
   temp['Key_Features'] =longdescription

以上情况我都分别试过,上面的是组合的。这些适用于大多数情况,但在第一种情况下,它也会对 ' 符号(或任何其他符号)进行编码和解码,我的输出变为:

Tender grillâd bites  (see the change in grill'd)

此代码依赖于 python2,因此请求 python2 中的解决方案。另外,我可以接受输出中的 HTML 标签。只需要有一个适用于所有三种情况的代码。谢谢。

现在 python3 已修复此问题。使用下面的代码进行转换:

temp['Key_Features']=longDescription.encode().decode('unicode-escape').encode('latin1').decode('utf8').replace ('&','&').replace(' ','').replace('"','"')

发生这种情况是因为数据采用不同的编码格式,无法由单个 encoding/decoding 处理。以上逻辑适用于所有人。