TypeError: can't use a string pattern on a bytes-like object, api
TypeError: can't use a string pattern on a bytes-like object, api
import json
import urllib.request, urllib.error, urllib.parse
Name = 'BagFullOfHoles' #Random player
Platform = 'xone'#pc, xbox, xone, ps4, ps3
url = 'http://api.bfhstats.com/api/playerInfo?plat=' + Platform + '&name=' + Name
json_obj = urllib.request.urlopen(url)
data = json.load(json_obj)
print (data)
类型错误:不能在类字节对象上使用字符串模式
最近刚用过 2to3.py,当我尝试修复它时出现了这个错误或其他错误。有人有任何指示吗?
json_obj = urllib.request.urlopen(url)
returns 一个 HTTPResponse 对象。我们需要 read()
响应字节,然后 decode()
那些字节到一个字符串如下:
import json
import urllib.request, urllib.error, urllib.parse
Name = 'BagFullOfHoles' #Random player
Platform = 'xone'#pc, xbox, xone, ps4, ps3
url = 'http://api.bfhstats.com/api/playerInfo?plat=' + Platform + '&name=' + Name
json_obj = urllib.request.urlopen(url)
string = json_obj.read().decode('utf-8')
json_obj = json.loads(string)
print (json_obj)
Python 3,如您所知,有不同的 bytes
和 str
类型。从以二进制模式打开的文件读取将 return bytes
个对象。
json.load()
函数仅适用于以文本模式(与二进制模式相对)打开的文件(和类似文件的对象)。看起来 urllib.request.urlopen()
将 return 二进制模式下的类文件。
考虑从 HTTPResponse
对象读取并解码,然后传递给 json.loads()
,而不是使用 json.load()
,如下所示:
with urllib.request.urlopen(url) as f:
json_str = f.read().decode()
obj = json.loads(json_str)
或者,您可能希望调查 requests module。
import json
import urllib.request, urllib.error, urllib.parse
Name = 'BagFullOfHoles' #Random player
Platform = 'xone'#pc, xbox, xone, ps4, ps3
url = 'http://api.bfhstats.com/api/playerInfo?plat=' + Platform + '&name=' + Name
json_obj = urllib.request.urlopen(url)
data = json.load(json_obj)
print (data)
类型错误:不能在类字节对象上使用字符串模式
最近刚用过 2to3.py,当我尝试修复它时出现了这个错误或其他错误。有人有任何指示吗?
json_obj = urllib.request.urlopen(url)
returns 一个 HTTPResponse 对象。我们需要 read()
响应字节,然后 decode()
那些字节到一个字符串如下:
import json
import urllib.request, urllib.error, urllib.parse
Name = 'BagFullOfHoles' #Random player
Platform = 'xone'#pc, xbox, xone, ps4, ps3
url = 'http://api.bfhstats.com/api/playerInfo?plat=' + Platform + '&name=' + Name
json_obj = urllib.request.urlopen(url)
string = json_obj.read().decode('utf-8')
json_obj = json.loads(string)
print (json_obj)
Python 3,如您所知,有不同的 bytes
和 str
类型。从以二进制模式打开的文件读取将 return bytes
个对象。
json.load()
函数仅适用于以文本模式(与二进制模式相对)打开的文件(和类似文件的对象)。看起来 urllib.request.urlopen()
将 return 二进制模式下的类文件。
考虑从 HTTPResponse
对象读取并解码,然后传递给 json.loads()
,而不是使用 json.load()
,如下所示:
with urllib.request.urlopen(url) as f:
json_str = f.read().decode()
obj = json.loads(json_str)
或者,您可能希望调查 requests module。