JSON 输出在 JSON 输出 pprint Python 中有奇怪的字符
JSON output has weird characters in JSON output pprint Python
在我的休息电话中(使用 YT API v3)我在 JSON 输出中变得奇怪 'u' 个字符。
我正在使用 python 中的 pprint。
我的代码是一个正常的休息调用:
import os
from io import StringIO
import json
import pprint
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
scopes = ["https://www.googleapis.com/auth/youtube.readonly"]
def main():
# Disable OAuthlib's HTTPS verification when running locally.
# *DO NOT* leave this option enabled in production.
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
api_service_name = "youtube"
api_version = "v3"
client_secrets_file = "xxxxxx.json"
# Get credentials and create an API client
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, scopes)
credentials = flow.run_console()
youtube = googleapiclient.discovery.build(
api_service_name, api_version, credentials=credentials)
request = youtube.playlists().list(
part="snippet",
channelId="UC_ANPr8IkWibKlKhmi_-H1g"
)
response = request.execute()
pprint.pprint(response)
print(response)
if __name__ == "__main__":
main()
我的 JSON 输出如下所示:
{u'etag': u'"p4VTdlkQv3HQeTEaXgvLePAydmU/hwD3N6ajbzX2GqxCVs32nBgZbs8"',
u'items': [{u'etag': u'"p4VTdlkQv3HQeTEaXgvLePAydmU/9F4RmINu4drT-fTZjviHFXj3Yak"',
u'id': u'PLejO9z7yhQOxjONeDVWaAy3kX3tEcImCR',
u'kind': u'youtube#playlist',
u'snippet': {u'channelId': u'UC_ANPr8IkWibKlKhmi_-H1g',
u'channelTitle': u'haramaininfo',
u'description': u'',
u'localized': {u'description': u'',
u'title': u'Eid Takbeerat 1440'}, ....
查看 u'xxxx': {u' .... ??
这是什么以及如何获得正确的 JSON 格式输出??
那些是unicode strings。 u'...'
只是一个表示形式,将它们与 ASCII 字符串区分开来。
如果您对这种表示方式感到困扰,请立即切换到 Python 3(具有本机 unicode 字符串)。 You have 8 days precisely.
这个u表示它是一个Unicode字符串。您可以像访问 dictionary/json 一样访问此响应对象。
例如。 reponse['etag']
会给你正确的值。
谢谢大家
我将 import ast 添加到我的代码中,然后使用这些代码添加:
jdata = ast.literal_eval(json.dumps(response))
pprint.pprint(jdata)
我现在可以正确打印了。
在我的休息电话中(使用 YT API v3)我在 JSON 输出中变得奇怪 'u' 个字符。
我正在使用 python 中的 pprint。
我的代码是一个正常的休息调用:
import os
from io import StringIO
import json
import pprint
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
scopes = ["https://www.googleapis.com/auth/youtube.readonly"]
def main():
# Disable OAuthlib's HTTPS verification when running locally.
# *DO NOT* leave this option enabled in production.
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
api_service_name = "youtube"
api_version = "v3"
client_secrets_file = "xxxxxx.json"
# Get credentials and create an API client
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, scopes)
credentials = flow.run_console()
youtube = googleapiclient.discovery.build(
api_service_name, api_version, credentials=credentials)
request = youtube.playlists().list(
part="snippet",
channelId="UC_ANPr8IkWibKlKhmi_-H1g"
)
response = request.execute()
pprint.pprint(response)
print(response)
if __name__ == "__main__":
main()
我的 JSON 输出如下所示:
{u'etag': u'"p4VTdlkQv3HQeTEaXgvLePAydmU/hwD3N6ajbzX2GqxCVs32nBgZbs8"',
u'items': [{u'etag': u'"p4VTdlkQv3HQeTEaXgvLePAydmU/9F4RmINu4drT-fTZjviHFXj3Yak"',
u'id': u'PLejO9z7yhQOxjONeDVWaAy3kX3tEcImCR',
u'kind': u'youtube#playlist',
u'snippet': {u'channelId': u'UC_ANPr8IkWibKlKhmi_-H1g',
u'channelTitle': u'haramaininfo',
u'description': u'',
u'localized': {u'description': u'',
u'title': u'Eid Takbeerat 1440'}, ....
查看 u'xxxx': {u' .... ??
这是什么以及如何获得正确的 JSON 格式输出??
那些是unicode strings。 u'...'
只是一个表示形式,将它们与 ASCII 字符串区分开来。
如果您对这种表示方式感到困扰,请立即切换到 Python 3(具有本机 unicode 字符串)。 You have 8 days precisely.
这个u表示它是一个Unicode字符串。您可以像访问 dictionary/json 一样访问此响应对象。
例如。 reponse['etag']
会给你正确的值。
谢谢大家
我将 import ast 添加到我的代码中,然后使用这些代码添加:
jdata = ast.literal_eval(json.dumps(response))
pprint.pprint(jdata)
我现在可以正确打印了。