我正在尝试导入使用json.dumps
保存并包含推文坐标的文件:
{
"type": "Point",
"coordinates": [
-4.62352292,
55.44787441
]
}
我的代码是:
>>> import json
>>> data = json.loads('/Users/JoshuaHawley/clean1.txt')
但每次我收到错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我想最终提取所有坐标并将它们分别保存到不同的文件中,以便可以对它们进行映射,但这个看似简单的问题阻止了我这样做。我已经查看了类似错误的答案,但似乎无法将其应用于此。任何帮助都会受到赞赏,因为我对python来说比较新。
答案 0 :(得分:27)
json.loads()
采用 JSON编码的字符串,而不是文件名。您想要使用json.load()
(无s
)而传入一个打开的文件对象:
with open('/Users/JoshuaHawley/clean1.txt') as jsonfile:
data = json.load(jsonfile)
open()
命令生成一个json.load()
可以读取的文件对象,为您生成解码的Python对象。 with
语句确保文件在完成后再次关闭。
另一种方法是自己阅读数据,然后将其传递给json.loads()
。
答案 1 :(得分:5)
我有类似的错误:"期望值:第1行第1列(字符0)"
帮助我添加" myfile.seek(0)",将指针移动到0字符
with open(storage_path, 'r') as myfile:
if len(myfile.readlines()) != 0:
myfile.seek(0)
Bank_0 = json.load(myfile)
答案 2 :(得分:1)
请使用此功能
def read_json_file(filename):
with open(filename, 'r') as f:
cache = f.read()
data = eval(cache)
return data
另一个功能
def read_json_file(filename):
data = []
with open(filename, 'r') as f:
data = [json.loads(_.replace('}]}"},', '}]}"}')) for _ in f.readlines()]
return data