Python-查找可变数目的子字符串之间的字符串

时间:2019-03-10 10:32:27

标签: python arrays python-3.x string substring

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

如您所见,首先有[,第一个和第二个值之间有3个空格,第二个和第3个值之间有1个空格,第3个和第4个值之间有2个空格,并且有{{1} }。

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

例如;

]

通常会有128个这样的文本元素(值之间最多3个空格,值之间最少1个空格),但是我想尝试通过此示例找到解决方案。我尝试了a[0]=-0.0597212 a[1]=0.00344087 a[2]=-0.23413301 a[3]=0.02406648 split.strip()函数,但没有找到适合我的解决方案。你能帮我吗?

3 个答案:

答案 0 :(得分:2)

list(map(float, txt[1:-1].split()))

答案 1 :(得分: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])

答案 2 :(得分: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]