无法解析所有JSON项

时间:2015-09-28 13:33:11

标签: python json

我正在尝试解析此JSON响应:

[
   "http://torrent.ubuntu.com:6969/announce",
   "udp://open.demonii.com:1337/announce",
   "udp://torrent.ubuntu.com:6969/announce",
   "udp://tracker.leechers-paradise.org:6969/announce",
   "udp://tracker.openbittorrent.com:80/announce"
]

使用:

for item in jdata:
    torrent_tracker = item
    print(torrent_tracker)
magnet = "magnet:?xt=urn:btih:" + hash + "&tr=" + torrent_tracker

但它似乎只是分别得到每一行。有没有办法可以将所有JSON结果输入torrent_tracker var?

该JSON的有效种子跟踪器可能是:

&tr=udp://torrent.ubuntu.com:6969/announce&tr=udp://tracker.leechers-paradise.org:6969/announce&tr=udp://tracker.openbittorrent.com:80/announce&tr=udp://tracker.coppersurfer.tk:6969/announce

3 个答案:

答案 0 :(得分:0)

只需使用+=(在python 3中)。

torrent_tracker = torrent_tracker + item适用于任何python。

如果你想要一个列表,在for循环之上,请放置torrent_tracker = []并将项目包装在[]torrent_tracker = torrent_tracker + [item])中。对于字符串,请在for循环之前设置torrent_tracker = ''

答案 1 :(得分:0)

无需for循环。您可以在列表中添加list comprehension

前的所有字符串
["&tr=" + s for s in jdata]

然后,您可以使用string.join()加入他们。

因此,例如,这可能适合您:

magnet = "magnet:?xt=urn:btih:" + hash + "".join(["&tr=" + s for s in jdata])

虽然如果您打算将这些作为GET参数发送,您可能需要先对它们进行URL编码;)

答案 2 :(得分:0)

不使用循环使用join()方法:

 torrent_tracker = '&tr=' + '&tr='.join(jdata)
 magnet = "magnet:?xt=urn:btih:" + hash + torrent_tracker