2015-10-16 72 views
2

我目前正在访问OldSchool RuneScape的API,它以JSON的形式返回字符串,但不适用于我。Python3 - JSON错误

我当前的代码:

import json 
import urllib.request 

name = input('OSRS name? ') 
url = 'http://services.runescape.com/m=hiscore_oldschool/index_lite.ws?player={0}'.format(name) 

open_url = urllib.request.urlopen(url) 
read_url = open_url.read().decode() 
format_to_string = str(read_url) 

j = json.loads(format_to_string) 
print(j) 

但如果我尝试例如姓名itz_craft,我得到一个错误。

OSRS name? itz_craft 
Traceback (most recent call last): 
File "/home/pi/Programming/Python3/RuneScape/json_test.py", line 11, in <module> 
j = json.loads(format_to_string) 
File "/usr/lib/python3.4/json/__init__.py", line 318, in loads 
return _default_decoder.decode(s) 
File "/usr/lib/python3.4/json/decoder.py", line 346, in decode 
raise ValueError(errmsg("Extra data", s, end, len(s))) 
ValueError: Extra data: line 1 column 7 - line 28 column 1 (char 6 - 315) 

我希望有人可以帮我解决这个问题,所以我能避免问题后使用JSON,因为我要利用这个这么多。

无论如何,谢谢!

+0

你确定API正在返回JSON吗?我在浏览器中访问了该网址,该网页是text/html。有一个'format'参数可以指定'JSON'吗? – Monkpit

回答

0

的在RuneScape HiScores API documentation说,返回的值是:

一个换行符分隔的CSV

的字符串

所以你不能分析它的JSON,因为它不是。

+0

我如何使用CSV来做到这一点? – Zhendos

+0

Python在标准库中有一个CSV解析器,请查看[官方文档](https://docs.python.org/2/library/csv.html)或[本教程](https: //pymotw.com/2/csv/)。如果您有关于CSV模块的其他问题,您应该提出一个单独的问题。 – Monkpit

+0

如果我帮助过你或指出你的方向正确,请考虑将此标记为已接受的答案。 – Monkpit