'list' 对象没有属性 'decode' - Python 错误
'list' object has no attribute 'decode' - Python error
我在解码字符串中的某些数据时遇到问题
respData = urllib.request.urlopen(
'https://www.mcdelivery.com.pk/pk/browse/menu.html')
resp = respData.read()
link = re.findall(r'<ul class="secondary-menu">(.*?)</ul>', str(resp))
# URLS
Urls = re.findall("href=[\"\'](.*?)[\"\']", str(link))
# remove amp from the urls
Url1 = [re.sub(r'amp;', '', item) for item in Urls]
# menu
deals = re.findall(r'<span>(.*?)</span>', str(link))
print(deals)
输出:
['Deals', "\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85", '\\xc3\\x80la carte & Value Meals', 'Crispy Chicken', 'Share Box', 'Happy Meals', 'Desserts', 'McCaf\\xc3\\xa9', 'Beverages', 'Side Lines', 'Snack Time']
我想改变这个
\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85", '\\xc3\\x80la carte & Value Meals, McCaf\\xc3\\xa9'
到 'What's New', 'la carte & Value Meals' ,'McCafe'
我相信它与 .decode('utf-8') 有关,我确实申请了我正在使用正则表达式获取交易的行 deals = re.findall(r'<span>(.*?)</span>', str(link)).decode('uts-8')
但它给出了一个错误:
deals = re.findall(r'<span>(.*?)</span>', str(link)).decode('uts-8')
AttributeError: 'list' object has no attribute 'decode'
总结:
我知道我的问题可以通过 decode('utf-8') 解决,但我无法正确应用它。只需要帮助如何解码我在交易中获取的数据
字符串已编码,因此您可以看到类似 "\\"
的内容,这意味着 "\"
\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85
实际上是★What's New★
所以我们现在可以分两步来处理:
str1 = """\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85", '\\xc3\\x80la carte & Value Meals, McCaf\\xc3\\xa9'"""
str2 = str1.replace("\\","\")
print(str2)
# \xe2\x98\x85What\'s New\xe2\x98\x85", '\xc3\x80la carte & Value Meals, McCaf\xc3\xa9'
然后我们处理:
str1 = b"""\xe2\x98\x85What\'s New\xe2\x98\x85", '\xc3\x80la carte & Value Meals, McCaf\xc3\xa9'"""
str2 = str1.decode("utf-8")
print(str2)
# ★What\'s New★", 'Àla carte & Value Meals, McCafé'
希望对您有所帮助
我在解码字符串中的某些数据时遇到问题
respData = urllib.request.urlopen(
'https://www.mcdelivery.com.pk/pk/browse/menu.html')
resp = respData.read()
link = re.findall(r'<ul class="secondary-menu">(.*?)</ul>', str(resp))
# URLS
Urls = re.findall("href=[\"\'](.*?)[\"\']", str(link))
# remove amp from the urls
Url1 = [re.sub(r'amp;', '', item) for item in Urls]
# menu
deals = re.findall(r'<span>(.*?)</span>', str(link))
print(deals)
输出:
['Deals', "\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85", '\\xc3\\x80la carte & Value Meals', 'Crispy Chicken', 'Share Box', 'Happy Meals', 'Desserts', 'McCaf\\xc3\\xa9', 'Beverages', 'Side Lines', 'Snack Time']
我想改变这个
\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85", '\\xc3\\x80la carte & Value Meals, McCaf\\xc3\\xa9'
到 'What's New', 'la carte & Value Meals' ,'McCafe'
我相信它与 .decode('utf-8') 有关,我确实申请了我正在使用正则表达式获取交易的行 deals = re.findall(r'<span>(.*?)</span>', str(link)).decode('uts-8')
但它给出了一个错误:
deals = re.findall(r'<span>(.*?)</span>', str(link)).decode('uts-8')
AttributeError: 'list' object has no attribute 'decode'
总结: 我知道我的问题可以通过 decode('utf-8') 解决,但我无法正确应用它。只需要帮助如何解码我在交易中获取的数据
字符串已编码,因此您可以看到类似 "\\"
的内容,这意味着 "\"
\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85
实际上是★What's New★
所以我们现在可以分两步来处理:
str1 = """\\xe2\\x98\\x85What\\\'s New\\xe2\\x98\\x85", '\\xc3\\x80la carte & Value Meals, McCaf\\xc3\\xa9'"""
str2 = str1.replace("\\","\")
print(str2)
# \xe2\x98\x85What\'s New\xe2\x98\x85", '\xc3\x80la carte & Value Meals, McCaf\xc3\xa9'
然后我们处理:
str1 = b"""\xe2\x98\x85What\'s New\xe2\x98\x85", '\xc3\x80la carte & Value Meals, McCaf\xc3\xa9'"""
str2 = str1.decode("utf-8")
print(str2)
# ★What\'s New★", 'Àla carte & Value Meals, McCafé'
希望对您有所帮助