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 stringsu'...' 只是一个表示形式,将它们与 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)

我现在可以正确打印了。