Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-从musixmatch json响应中获取歌词_Python_Json_Python 3.x_Musixmatch - Fatal编程技术网

Python-从musixmatch json响应中获取歌词

Python-从musixmatch json响应中获取歌词,python,json,python-3.x,musixmatch,Python,Json,Python 3.x,Musixmatch,在Python中,我试图解析来自musixmatch api的json响应,但我在理解如何访问给定信息时遇到了困难,请帮助! 如果必要的话,我可以稍后发布JSON响应,但这是一个相当多的文本 import json from os.path json, dirname from musixmatch import Musixmatch musixmatch = Musixmatch(<api key>) lyrics = musixmatch.matcher_lyrics_get

在Python中,我试图解析来自musixmatch api的json响应,但我在理解如何访问给定信息时遇到了困难,请帮助! 如果必要的话,我可以稍后发布JSON响应,但这是一个相当多的文本

import json
from os.path json, dirname
from musixmatch import Musixmatch

musixmatch = Musixmatch(<api key>)

lyrics = musixmatch.matcher_lyrics_get('Grenade', 'Bruno Mars')


print (lyrics)

for item in jsonLyric['message']:
   for thing in item['body']:
     for stuff in thing['lyrics']:
        print(stuff['lyrics_body'])

正如我们所看到的,JSON响应是一个字典,里面有许多其他字典,但我们想要找到的是包含“歌词\正文”及其值的正文字典

我们怎么能这样做?其实很简单。在一行中,我们可以继续调用字典并传递包含另一个键的键,因此,例如,我们要访问的第一个字典是整个JSON响应,因此我们可以调用包含JSON响应的歌词变量,然后我们传递我们要访问的键,在本例中为“message”,歌词[“message”]

你做这件事的方式也很简单。您只需要遍历集成字典中的每个键

for message in lyrics:
    for body in lyrics[message]:
     if body == "body":
         for lyric in lyrics[message][body]:
             for lyrBod in lyrics[message][body][lyric]:
                 if lyrBod == "lyrics_body":
                     print(lyrics[message][body][lyric][lyrBod])
正如你所见,这是同样的事情,但只是需要更长的时间


希望这有帮助

您的输出是什么,预期输出是什么?知道JSON响应是什么也有助于发布我试图解析的输出。我相信它的JSON是基于它的结构,但我可能是错的预期输出是什么?什么是
jsonLyric
?为什么不直接做歌词['message']['body']['lymps']['lymps\u body']?
print(lyrics["message"]["body"]["lyrics"]["lyrics_body"])
for message in lyrics:
    for body in lyrics[message]:
     if body == "body":
         for lyric in lyrics[message][body]:
             for lyrBod in lyrics[message][body][lyric]:
                 if lyrBod == "lyrics_body":
                     print(lyrics[message][body][lyric][lyrBod])