Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Jupyter笔记本上获取JSONDECODE错误_Python_Json_Django_Pandas_Jupyter Notebook - Fatal编程技术网

Python 在Jupyter笔记本上获取JSONDECODE错误

Python 在Jupyter笔记本上获取JSONDECODE错误,python,json,django,pandas,jupyter-notebook,Python,Json,Django,Pandas,Jupyter Notebook,我正在设置一个Jupyter笔记本,它将来自Ibm watson studio API的机器学习模型应用于来自Postgresql数据库的一些数据 当重新格式化数据以使API能够读取时,出现了一个JSONDecodeError:期望属性名包含在双引号中:第1行第2列(char 1),我无法解决它 这是完整的回溯: --------------------------------------------------------------------------- JSONDecodeError

我正在设置一个Jupyter笔记本,它将来自Ibm watson studio API的机器学习模型应用于来自Postgresql数据库的一些数据

当重新格式化数据以使API能够读取时,出现了一个
JSONDecodeError:期望属性名包含在双引号中:第1行第2列(char 1)
,我无法解决它

这是完整的回溯:

---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
<ipython-input-114-9d8e7cf98a41> in <module>()
      1 import json
      2 
----> 3 classes = natural_language_classifier.classify_collection('7818d2s519-nlc-1311', reshaped).get_result()
      4 
      5 print(json.dumps(classes, indent=2))

/opt/conda/envs/DSX-Python35/lib/python3.5/site-packages/watson_developer_cloud/natural_language_classifier_v1.py in classify_collection(self, classifier_id, collection, **kwargs)
    152         if collection is None:
    153             raise ValueError('collection must be provided')
--> 154         collection = [self._convert_model(x, ClassifyInput) for x in collection]
    155 
    156         headers = {}

/opt/conda/envs/DSX-Python35/lib/python3.5/site-packages/watson_developer_cloud/natural_language_classifier_v1.py in <listcomp>(.0)
    152         if collection is None:
    153             raise ValueError('collection must be provided')
--> 154         collection = [self._convert_model(x, ClassifyInput) for x in collection]
    155 
    156         headers = {}

/opt/conda/envs/DSX-Python35/lib/python3.5/site-packages/watson_developer_cloud/watson_service.py in _convert_model(val, classname)
    461         if classname is not None and not hasattr(val, "_from_dict"):
    462             if isinstance(val, str):
--> 463                 val = json_import.loads(val)
    464             val = classname._from_dict(dict(val))
    465         if hasattr(val, "_to_dict"):

/opt/conda/envs/DSX-Python35/lib/python3.5/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    317             parse_int is None and parse_float is None and
    318             parse_constant is None and object_pairs_hook is None and not kw):
--> 319         return _default_decoder.decode(s)
    320     if cls is None:
    321         cls = JSONDecoder

/opt/conda/envs/DSX-Python35/lib/python3.5/json/decoder.py in decode(self, s, _w)
    337 
    338         """
--> 339         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    340         end = _w(s, end).end()
    341         if end != len(s):

/opt/conda/envs/DSX-Python35/lib/python3.5/json/decoder.py in raw_decode(self, s, idx)
    353         """
    354         try:
--> 355             obj, end = self.scan_once(s, idx)
    356         except StopIteration as err:
    357             raise JSONDecodeError("Expecting value", s, err.value) from None

JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
当我对
行进行注释时,我只需执行
打印(重塑)
,这就是我得到的响应,这是Watson studio的正确格式:

{
  "collection": [
    {
      "text": "Lorem ipsum sjvh  hcx bftiyf,  hufcil, igfgvjuoigv gvj ifcil ,ghn fgbcggtc   yfctgg h vgchbvju."
    },
    {
      "text": "Lorem ajjgvc wiufcfboitf iujcvbnb hjnkjc  ivjhn oikgjvn uhnhgv 09iuvhb  oiuvh boiuhb mkjhv mkiuhygv m,khbgv mkjhgv mkjhgv."
    },
    {
      "text": "Lorem aiv ibveikb jvk igvcib ok blnb v  hb b hb bnjb bhb bhn bn vf vbgfc vbgv nbhgv bb nb nbh nj mjhbv mkjhbv nmjhgbv nmkn"
    },
    {
      "text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"
    },
    {
      "text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"
    },
    {
      "text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"
    },
    {
      "text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"
    }
  ]
}
请帮忙

编辑

这就是我刚才所做的:

reshape = json.dumps([{'text' : t} for t in data_df_1['description']])


print(reshape)
这就是我得到的结果:

[{"text": "Lorem ipsum sjvh  hcx bftiyf,  hufcil, igfgvjuoigv gvj ifcil ,ghn fgbcggtc   yfctgg h vgchbvju."}, {"text": "Lorem ajjgvc wiufcfboitf iujcvbnb hjnkjc  ivjhn oikgjvn uhnhgv 09iuvhb  oiuvh boiuhb mkjhv mkiuhygv m,khbgv mkjhgv mkjhgv."}, {"text": "Lorem aiv ibveikb jvk igvcib ok blnb v  hb b hb bnjb bhb bhn bn vf vbgfc vbgv nbhgv bb nb nbh nj mjhbv mkjhbv nmjhgbv nmkn"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "lorem sivbnogc hbiuygv bnjiuygv bmkjygv nmjhgv"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "lore  juhgv bnmkiuhygv nmkiuhb mkjiuhb mkjgv mkjhygv nmkjuytfrdc mjhygtfvc mkijuytfc vbnmkjuhygtfv bnmkjuhygtfvc mjhygv mjhgv nmjhuygv bnjhb mnhgv mjhgv njhgv bnjhb njhygvbnjkiuhbhjihbv mjhgbv nmkjhbhnjb njhgv njmkjhbvbh nhgv mbhhnb hjbhu njbhn njb n  jjijh bb jiji bi jiijib bkiijij b hggg."}, {"text": "Lorem uhygfv bniuhgv nmkjuhgv nmkijuhygv mkihv bjijnb bnjib bjinb bnjub vgvg bhgfc nhgytredxc ngtfv mkjuygfcv bnmjuygv mjhgv bnmkjhgv njhgv njgfvc."}]

我复制了结果并用以下数据替换重塑:

#reshape = json.dumps([{'text' : t} for t in data_df_1['description']])

reshape = [{"text": "Lorem ipsum sjvh  hcx bftiyf,  hufcil, igfgvjuoigv gvj ifcil ,ghn fgbcggtc   yfctgg h vgchbvju."}, {"text": "Lorem ajjgvc wiufcfboitf iujcvbnb hjnkjc  ivjhn oikgjvn uhnhgv 09iuvhb  oiuvh boiuhb mkjhv mkiuhygv m,khbgv mkjhgv mkjhgv."}, {"text": "Lorem aiv ibveikb jvk igvcib ok blnb v  hb b hb bnjb bhb bhn bn vf vbgfc vbgv nbhgv bb nb nbh nj mjhbv mkjhbv nmjhgbv nmkn"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "lorem sivbnogc hbiuygv bnjiuygv bmkjygv nmjhgv"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "Lorem jsvc smc cbd ciecdbbc d vd bcvdvbj obcvb vcibs j dvx"}, {"text": "lore  juhgv bnmkiuhygv nmkiuhb mkjiuhb mkjgv mkjhygv nmkjuytfrdc mjhygtfvc mkijuytfc vbnmkjuhygtfv bnmkjuhygtfvc mjhygv mjhgv nmjhuygv bnjhb mnhgv mjhgv njhgv bnjhb njhygvbnjkiuhbhjihbv mjhgbv nmkjhbhnjb njhgv njmkjhbvbh nhgv mbhhnb hjbhu njbhn njb n  jjijh bb jiji bi jiijib bkiijij b hggg."}, {"text": "Lorem uhygfv bniuhgv nmkjuhgv nmkijuhygv mkihv bjijnb bnjib bjinb bnjub vgvg bhgfc nhgytredxc ngtfv mkjuygfcv bnmjuygv mjhgv bnmkjhgv njhgv njgfvc."}]


classes = natural_language_classifier.classify_collection('7818d2s519-nlc-1311', reshape).get_result()

print(classes)

我通过这种方式得到了成功的回应。。但这不是一个很好的方法。有什么解决方案吗?

问题是json.dumps()返回了
(json表示)并且需要对classify\u collections()进行输入
。因此,我们在这里不使用json.dumps(),而是简单地用
replace
对键使用双引号(“),并将
传递给函数

reshape = [{"text" : t} for t in data_df_1["description"]]

你能试试这个
json.dumps({“collection”:[{“text”:t}代表数据中的t\u dfu\u 1[“description”]})
吗?试试这个
new\u reformed=json.loads(json.dumps({“collection”:[{“text”:t}代表数据中的t\u dfu\u 1[“description”]}))
并通过这个新的_重塑。如果您阅读了源代码,它会说集合应该是列表。检查示例。尝试这个
json.dumps([{“text”:t}表示数据中的t_df_1[“description”]])
json.dumps([{“collection”:[{“text”:t}表示数据中的t_df u 1[“description”]}])
您读过这个示例了吗(在我上面提供的链接中)它在哪里工作正常?您是否可以尝试手动更改print的输出并将其重新分配给另一个变量,然后尝试更改为示例中所示的格式。
reshape = [{"text" : t} for t in data_df_1["description"]]