簡體   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