在Python中,我试图解析来自Mu-6 parse的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'])这是我要拿回打印(歌词)的输出。
{"message": {"header": {"status_code": 200, "execute_time": 0.005511999130249}, "body": {"lyrics": {"lyrics_id": 14678126, "can_edit": 0, "locked": 1, "published_status": 3, "action_requested": "", "verified": 0, "restricted": 0, "instrumental": 0, "explicit": 0, "lyrics_body": "Easy come, easy go, that's just how you live oh\nTake, take, take it all, but you never give\nShould have known you was trouble from the first kiss\nHad your eyes wide open,\nWhy were they open?\n\nGave you all I had and you tossed it in the trash\nYou tossed it in the trash, you did\nTo give me all your love is all I ever asked 'cause\nWhat you don't understand is I'd catch a grenade for ya (yeah, yeah)\nThrow my head on a blade for ya (yeah, yeah)\nI'd jump in front of a train for ya (yeah, yeah)\nYou know I'd do anything for ya (yeah, yeah)\n\nOh oh, I would go through all this pain\nTake a bullet straight through my brain\nYes, I would die for ya baby\nBut you won't do the same\n\nNo, no, no, no\n...\n\n******* This Lyrics is NOT for Commercial use *******", "lyrics_language": "en", "lyrics_language_description": "English", "script_tracking_url": "https://tracking.musixmatch.com/t1.0/m_js/e_1/sn_0/l_14678126/su_0/rs_0/tr_3vUCALM0_W22leSuW0j51mdZjjfpE4x6a9jOCvWJRkoOBKyShPRRZQELOwGOsZtDZ8P7rI_Ugft_vMQta6YUky74d5X3RIpnkF1GkipbfBPqaDh2M9h4wtFKqwGgJoy8k52jf0kTKu2GFboxJpmcZP_TL17Tt5-rkmsIOB4VQk1LX_s66Du-rGVtu_NcuDuzquhrpHnIEyygjxJGcHYfbpHfFt3gDfDkAfuv25OHWoHt6FJarcoSeY5eloAlMJtqtQqXVIU4bVp3zmqnTdEsjj5mvyBOq2Yvl_WRsRYBiSP4fISEiW8Nz_cwKdLFqVo-9L4Pcz7ryASfVXfRD-nROD18LJIBomN5JzzcPMk9hEjHwmxt9PUccK5e_G23RYrgXgrWJlVQUyoIX5CNb_3IW893C0xfSrEm/", "pixel_tracking_url": "https://tracking.musixmatch.com/t1.0/m_img/e_1/sn_0/l_14678126/su_0/rs_0/tr_3vUCAB0Xj7CAyD4mjojoI5pSqo0L_Qojn7Q9jhh7eIMnru0DnnnxducKM9BTbyEX19XGYKgaLEjaRJUedry3aKHTl45sXeTudU6Y5g6DYg4UqxqUZVQuGT8RofGA25JeQfvfJnabBr4Ua2rDhu52CH9gY5T4MO58sTV_WEnz1OeovHSJJrcR7FJ6dGtZ7ddBSj5DAs3tXvKVZM-CMngsa4lVHgJvlKyQBI9dIlKpIasxUiHE8ESQ5nvq355A-9hB38ZO1xBSBE_poFKeFODVuxAYwt61nwkcy1INwNyRfu-88W0T8qdzmNdHPzC3CZ13W6_zvJQs144ir8AMF_ScjfXdyIZ5rBKT3yQYp4BIAuWYALrfv87mitBdkqukq_HiN79vaqsKTpn2dr5-IMe97ioMeI4xHwX2/", "html_tracking_url": "https://tracking.musixmatch.com/t1.0/m_html/e_1/sn_0/l_14678126/su_0/rs_0/tr_3vUCANQr9qsfeDL9iPgGrXIvJIBLLsgir3pFRzL4BslntB9GYllG57LNZuNC08A5g3r87JYVDgKTKk4QfYdU-j3sfs8i8onqzpCCV_w27R7ePS_k13wHNHBfSZpHQcJL4ocPj9i9E-Cms8yT9q4vLC31c3DGfudXXV6k5MajtdCVZdHaHfeNNm6tmstseeFCD6MuQxmRRkiUmHYTfgi2TfPwR4CzOZbEdULg5X6AHiiT4MMfIKAspZwghHUMhq3udos-8052sIMMUyB8nQrquajI8ZyZGX9UzKQi21ZDfyFz5fyUF9gYwzX4WA1gxhmVlsppG_-ocY7m29ddOUjEcg0HM0b7CsrJw8tAtcnwLnFovDcW-a7xzNUDlCkqXBLU_sDVg_na0uE4fH1QuYFKvwX5bwlQ1d-l/", "lyrics_copyright": "Lyrics powered by www.musixmatch.com. This Lyrics is NOT for Commercial use and only 30% of the lyrics are returned.", "writer_list": [], "publisher_list": [], "backlink_url": "https://www.musixmatch.com/lyrics/Bruno-Mars/Grenade?utm_source=application&utm_campaign=api&utm_medium=", "updated_time": "2016-03-18T14:38:56Z"}}}}发布于 2018-04-23 18:31:12
所以可以看到JSON响应是一个字典,它里面有很多其他字典,但是我们想要达到的是包含"lyrics_body“及其值的正文字典。
我们怎么能这么做?其实很简单。在一行中,我们可以继续调用字典并传递包含另一个键的键,因此,例如,我们想要访问的第一个字典是整个JSON响应,因此我们可以调用包含JSON响应的歌词变量,然后我们传递我们想要访问的键--在本例中是"message",才是“message”。
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])正如你所看到的,这是一样的事情,但只是需要更长的时间。
希望这能有所帮助
https://stackoverflow.com/questions/49987323
复制相似问题