0

我有一个字符串 [-0.0597212 0.00344087 -0.23413301 0.02406648]

如您所见,[首先,第 1 和第 2 值之间有 3 个空格,第 2 和第 3 值之间有 1 个空格,第 3 和第 4 值之间有 2 个空格,]最后有。

我想用它们的符号分解这 4 个数值,并将这 4 个值分配给一个 4 元素数组。

例如;

a[0]=-0.0597212
a[1]=0.00344087
a[2]=-0.23413301
a[3]=0.02406648

通常会有 128 个元素与此文本类似(最多有 3 个空格,值之间最少有 1 个空格),但我想尝试通过这个示例找到解决方案。我尝试split.strip()replace()功能,但没有找到适合我的解决方案。你能帮助我吗 ?

4

3 回答 3

2
list(map(float, txt[1:-1].split()))
于 2019-03-10T10:36:04.017 回答
2
a="[-0.0597212   0.00344087 -0.23413301  0.02406648]"

#split string
a = a.split() 

#delete open & close square bracket
a[0] =  a[0][1:] 
a[-1] = a[-1][:-1] 

#convert to float
for i in range(len(a)):
    a[i] = float(a[i])
于 2019-03-10T10:56:33.913 回答
1

如果您使用numpy()

import numpy as np

s = '[-0.0597212   0.00344087 -0.23413301  0.02406648]'

np.fromstring(s.strip('[]'), dtype=float, sep=' ')
# [-0.0597212   0.00344087 -0.23413301  0.02406648]

您还可以使用ast.literal_eval

import ast
import re

ast.literal_eval(re.sub(r'\s+', ',', s))
# [-0.0597212, 0.00344087, -0.23413301, 0.02406648]
于 2019-03-10T10:40:50.540 回答