Python 将字符串列表转换为包含';inf&x27;

Python 将字符串列表转换为包含';inf&x27;,python,string,list,Python,String,List,我正在尝试将此字符串转换为列表: x ='[(6167.473999999997, inf), (9442.406000000004, 9527.590999999999), (12130.588999999996, 12548.22100000001), (10461.183000000006, 10669.501999999999), (53711.67000000004, 53805.396000000015), (9295.464999999997, 8816.614999999998)

我正在尝试将此字符串转换为列表:

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\u eval(x)
eval(x)
但都给了我一个错误。当使用
ast
方法时,我得到:
ValueError:格式错误的节点或字符串:
当使用
eval()
方法时,我得到:
NameError:未定义名称“inf”
。我知道错误的原因,但我不知道如何解决它们


如何解决这些错误?

inf
无效

我想你可以把它换掉

ast.literal_eval(x.replace('inf','float("inf")'))
但这会中断,因为您无法评估函数调用

你可以使用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版本中中断。

inf
无效

我想你可以把它换掉

ast.literal_eval(x.replace('inf','float("inf")'))
但这会中断,因为您无法评估函数调用

你可以使用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没有无限文本。您可能需要
NumPy
来处理
inf
,而不是尝试转换此字符串,首先查找是什么创建了字符串,并将其更改为使用正确的序列化格式。Python没有无限的文本。您可能需要
NumPy
来处理
inf
,而不是尝试转换此字符串,首先找出是什么创建了字符串,并将其更改为使用正确的序列化格式。感谢您的回答,我认为最好的方法确实是用数字替换inf!一句警告的话,这可能是特定于实现的,可能会在pythonThank的未来版本中中断。为了得到答案,我认为最好的方法确实是用一个数字替换inf!一句警告的话,这可能是特定于实现的,并且可能会在python的未来版本中中断