python - 当字符串列表包含“inf”时,将其转换为列表时出错
问题描述
我正在尝试将此字符串转换为列表:
x ='[(6167.473999999997, inf), (9442.406000000004, 9527.590999999999), (12130.588999999996, 12548.22100000001), (10461.183000000006, 10669.501999999999), (53711.67000000004, 53805.396000000015), (9295.464999999997, 8816.614999999998), (12636.802000000005, 12378.355999999996)]'
我尝试使用ast.literal_eval(x)
,eval(x)
但都给我一个错误。使用ast
我得到的方法时:ValueError: malformed node or string: <_ast.Name object at 0x7f3a27bacb10>
和使用eval()
我得到的方法时:NameError: name 'inf' is not defined
。我了解错误的原因,但我不知道如何解决它们。
我该如何解决这些错误?
解决方案
inf
无效...
我想你可以更换它
ast.literal_eval(x.replace('inf','float("inf")'))
但这会中断,因为您不能 literal_eval 函数调用
你可以使用 eval ...但那更危险
eval(x.replace('inf','float("inf")'))
或者您可以使用将被翻译为 inf 的数字
ast.literal_eval(x.replace('inf','2e308')) # will result in a python `inf`
>>> print(ast.literal_eval('2e308'))
inf
[警告] 最后一个选项可能与实现有关,可能不适用于所有版本的 python,它可能会在未来的 python 版本中中断
推荐阅读
- python - Python - 计算所需的自然数个数
- tensorflow - 可视化增强的火车图像 [tensorflow object detection api]
- python - Python:为什么即使没有指示,列表值也会改变?
- python-3.x - 在列表理解中引发异常:语法无效
- html - 如何使用 flex 在父 div 内的 2 个兄弟 div 旁边设置 1 个 div?
- azure - 无法坚持使用 SSL 应用程序网关重定向的自定义域
- python - 如何使用 python 为原始音频信号添加不同级别的音频分贝(dB)噪声?
- c# - 使用 EditorFor 时,日期默认为“dd/mm/yyyy”
- python - 检测图像中最大的多边形?
- javascript - 使用带有对象的状态作为下拉菜单中的选项:REACT