如何将"[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
尝试使用np.fromstring
前任:
import numpy as np
lst = '[nan 1 2 3]'
print(np.fromstring(lst.strip("[]"), sep=' '))
#-->[nan 1. 2. 3.]
你可以用None
有效的python替换NaN
,然后使用literal_eval
:
s = "[nan,1,2,3]"
literal_eval(s.replace('nan', 'None'))
# [None, 1, 2, 3]
如果你愿意使用 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)
使用numpy.fromstring
:
>>> s = '[nan, 1, 2, 3]'
>>> import numpy as np
>>> a = np.fromstring(s[1:-1], sep=', ')
>>> a
array([ nan, 1., 2., 3.])
>>>