繁体   English   中英

Python JSON数据导入

[英]Python JSON data importing

我正在尝试将数据从json文件导入sqlite,但出现了一些错误,我首先认为问题出在路径上,我以多种方式对其进行了更改,但是...没有结果,它给了我这个错误:

Traceback (most recent call last):
  File "C:/Users/Taner/PycharmProjects/untitled/MyProgram.py", line 13, in <module>
    json_object = json.loads(dummy_json)
  File "C:\Users\Taner\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

这是我的代码:

import json
import bz2
import sqlite3

fpath = "C:\\Users\\Taner\\Downloads\\RC_2012-12.bz2"
databasepath = "C:\\Users\\Taner\\Desktop\\Seagate\\reddit"

conn = sqlite3.connect(databasepath)
curs = conn.cursor()
with bz2.BZ2File(fpath) as file:
    for line in file:
        dummy_json = line
        json_object = json.loads(dummy_json)
        po = json.loads(line.decode('utf8'))
        curs.execute("INSERT INTO Reddit VALUES (?,?,?)", (po['id'], po['subreddit_id'], po['subreddit'],))
        conn.commit()

您已经在这里有了答案,因为在错误之后的行中,您已正确解码了utf-8中的行,然后再将其传递给json.loads。 因此,带有错误的行是完全没有意义的,您应该将其删除。

循环的正确形式应为:

with bz2.BZ2File(fpath) as file:
    for line in file:
        po = json.loads(json.loads(line.decode('utf8')))
        curs.execute("INSERT INTO Reddit VALUES (?,?,?)", (po['id'], po['subreddit_id'], po['subreddit'],))
        conn.commit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM