如何将“ [nan,1,2,3]”字符串转换为列表[nan,1,2,3]?

时间:2019-12-16 08:37:36

标签: python string list

如何将"[nan,1,2,3]"字符串转换为列表[nan,1,2,3]

如果我使用

    from ast import literal_eval

    literal_eval("[1,2,3]")

我明白了

    [1, 2, 3]

但是,如果我尝试转换其中带有nan的字符串,则会发生以下错误:

    File "<unknown>", line 1
        [nan  1  2  3
           ^
    SyntaxError: invalid syntax

    Process finished with exit code 1

4 个答案:

答案 0 :(得分:5)

尝试使用np.fromstring

例如:

import numpy as np

lst = '[nan  1  2  3]'
print(np.fromstring(lst.strip("[]"), sep=' '))
#-->[nan  1.  2.  3.]

答案 1 :(得分:1)

使用numpy.fromstring

>>> s = '[nan, 1, 2, 3]'
>>> import numpy as np
>>> a = np.fromstring(s[1:-1], sep=', ')
>>> a
array([ nan,   1.,   2.,   3.])
>>> 

答案 2 :(得分:1)

您可以将NaN替换为<{>是有效的python的None,然后使用literal_eval

s = "[nan,1,2,3]"

literal_eval(s.replace('nan', 'None'))
# [None, 1, 2, 3]

答案 3 :(得分:1)

如果您愿意使用numpy,则可以对浮点数使用隐式类型转换(请注意,对于整数,没有nan)

import numpy as np    
a = "[nan 1 2 3]"
np.array(a[1:-1].split(), dtype="f")
#array([nan,  1.,  2.,  3.], dtype=float32)