【问题标题】:Getting past Python value error for an integer获取整数的 Python 值错误
【发布时间】:2017-08-20 06:45:33
【问题描述】:

我正在尝试运行SerendipSlim 主题模型可视化工具。我已使用随附的脚本通过 MALLET (VEP_TMScripts) 生成主题模型。使用 SerendipSlim 读取创建的模型时,此行会引发以下错误:

topicNum = int(row[i])
ValueError: invalid literal for int() with base 10: '0.0032876898047722344'

关于如何克服它的任何想法?

【问题讨论】:

  • 这看起来像float(),如果你想要地板int 你可以int(float(row[i]))
  • 这取决于你想要什么。尝试将其解析为 int 是否有有效的案例?你想要什么结果?你只是想忽略它,有一个接近的值,有确切的值(显然不是 int)
  • 代码topicNum,我现在意识到,可能是在寻找一个 MALLET 主题号(它是 int 格式)。也许 [i] 从错误的地方读取...

标签: python valueerror


【解决方案1】:

如果你只是想“通过”它,你可以使用 float() 作为十进制数。

topicNum = float(row[i]).

对于 int 表示,您应该使用:

import math
new_topic_num = math.ceil(topicNum)

print new_topic_num
>> 1.0

现在您可以在以后的for i in range(int(new_topic_num)) 上重复使用int

【讨论】:

  • 试过了,但是小数当然会丢失。
  • 嗯,然后它会抛出line 84, in get_theta topicMetadataList = [{} for i in range(maxTopic+1)] TypeError: range() integer end argument expected, got float.instead。
  • 我知道了,然后保存另一个 var 代表完整的数字。使用round() 方法或math.ceil() 我会更新我的答案
猜你喜欢
  • 1970-01-01
  • 2017-09-26
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多