"TypeError: list indices must be integers, not str" Twitter JSON 数据



我正试图在PostgreSQL中插入一些JSON文件,但我是一种新的,我有一些问题。所以,我已经有了文件,这些文件已经编码了,这里有一个简单的例子,我正在尝试做什么。在Postgres中创建一些表,并在其中添加twitter信息。

import json
import psycopg2
conn = psycopg2.connect("dbname='postgres' user='bilabial' host='localhost'")
cur = conn.cursor()
linenumber = 0
data = open('tweets_testing.json').read()
for line in data:
    linenumber += 1
    try:
        str_line = line.strip()
        vals = json.loads(str_line)
        tweets = vals["text"]
        cur.execute("CREATE TABLE tweetstext (text VARCHAR(255));")
        cur.execute("INSERT INTO tweetstext (" + tweets+ ");")
        conn.commit()
    except KeyError:
        break 

所以我得到的错误是"TypeError:列表索引必须是整数,而不是str"。当我读到它的时候,我不太明白它的区别,所以任何帮助都会非常感激。

vals = json.loads(str_line)
vals的

type list print "Type vals", type(vals)

检查vals类型

演示:根据你的代码。

>>> import json
>>> str_line = "[1,2,3,5]"
>>> vals = json.loads(str_line)
>>> vals
[1, 2, 3, 5]
>>> type(vals)
<type 'list'>
>>> vals["text"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> 

期待valstype的下一行应该是dict,即字典。

`tweets = vals["text"]`

可以剪切str_line变量的值结构吗?


[编辑2]

根据我,我们需要加载json文件的所有内容。

data = open('tweets_testing.json').read()
vals = json.loads(data)

但代码会根据输入和逻辑改变

相关内容

最新更新