我正在尝试计算JSON数据中的Unicode字符数。我正在使用请求从Feed中获取数据。
import requests
r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')'
j_data = r.text
现在,我需要将j_data
转换为字典才能单独获取message
个项目。如果我只使用json.loads(j_data)
,我会获得UnicodeEncodeError: 'charmap' codec can't encode character
。
因此,我正在对j_data
进行编码,然后尝试使用loads
转换为dict。我收到此错误
TypeError: the JSON object must be str, not 'bytes'
如何解决这个问题?
代码:
import requests
import json
r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
j_data = r.text
encoded = j_data.encode()
b = json.loads(encoded)
print(b)
答案 0 :(得分:0)
它似乎在Python 2.7.6中运行良好
import requests
import json
req = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
contentJ = json.loads(req.content)
我得到一个名为contentJ的dict
答案 1 :(得分:0)
在我看来,你尝试编码一些不需要编码的东西。使用编码剥离行,并且在Python3.4中都可以正常工作。
import requests
import json
r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
j_data = r.text
b = json.loads(j_data)
print(type(b))
答案 2 :(得分:0)
要获取json,请使用r.json()
:
import requests # $ pip install requests
r = requests.get(url)
data = r.json()
您的错误:UnicodeEncodeError: 'charmap' codec can't encode character.
与json解析无关。当您尝试将Unicode打印到Windows控制台时,很可能会发生这种情况。配置可显示所需字符的控制台字体并安装win-unicode-console
包:
T:\> py -mpip install win-unicode-console
T:\> py -mrun your_script_that_prints_unicode.py
请参阅What's the deal with Python 3.4, Unicode, different languages and Windows?