【问题标题】:Overflow error when reading json file读取json文件时溢出错误
【发布时间】:2018-12-14 11:11:57
【问题描述】:

我正在尝试读取包含许多推文的 json,但出现以下错误。

OverflowError: int 太大而无法转换

脚本过滤多个 json 文件以获取特定的推文,并在到达特定 json 时崩溃。

产生错误的行是这一行:

df_temp = pd.read_json(path_or_buf=json_path, lines=True)

Here is the error in the cmd

【问题讨论】:

  • json.loads('{"id":73115419563449548887439843987598743985743234857632498756324987563248756238987432659874365987324655}') 适合我。请提供minimal reproducible example
  • 你能给我们一个minimal reproducible example吗?因为据我所知,在默认设置下,最近的 Python(至少从 2.7 和 3.3 开始,可能更早)会将731154195634495488 加载为int,而不是float
  • 确实如此。很可能 id 与错误无关。本质上,我的脚本过滤了多个 json 文件以获取特定的推文,当到达特定的 json 时它会崩溃。创建错误的行是这一行:df_temp = pd.read_json(path_or_buf=json_path, lines=True, dtype={"id_str": np.float64}
  • 你能给我们提供导致错误的示例 JSON 吗?
  • 当然。你可以下载它here

标签: python json python-3.x twitter tweets


【解决方案1】:

只需将用户 id 存储为字符串,并将其视为一个字符串(这实际上是您在处理此类 id 时应该做的)。如果您无法更改 json 输入格式,您始终可以先将其解析为字符串,然后再将其解析为 json 对象,并将引号添加到 id 代码中,例如使用正则表达式:Regex in python

我不知道您使用哪个库来解析 json,但也许隐式转换也会起作用:要么尝试对数字使用“getString”方法而不是“getInt”方法,或者强制 python 处理对象像一个字符串,类似于x = "" + json.getId()

Python 在打字方面非常松散,可能会让你这样做。

【讨论】:

  • 经过进一步测试,似乎id与报错无关。不过我还是不知道是什么原因造成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2020-10-11
  • 1970-01-01
  • 2019-04-27
相关资源
最近更新 更多