2016-08-06 84 views
-3

我们如何转换
Python的字符串转换为列出

['[0.0034596999 0.0034775001 0.0010091923]'] 


[[0.0034596999 0.0034775001 0.0010091923]] 

不带引号。我尝试使用eval,列表,元组,替换和s.strip(),但似乎没有任何工作。任何人都可以在这个

+2

是输入一个字符串还是一个包含字符串的列表?你的意思是结果是一个没有单引号的字符串,或者结果是一个包含一个包含浮点值或其他值的列表的列表?如果第一个,使用'replace()'方法删除所有引号。如果第二个,意识到列表的通常打印包括值之间的逗号。 –

+2

什么是数据的来源?你如何修复它,而不是以后? –

+0

它是一个字符串还是一个列表? –

回答

-2
lst = ['[0.0034596999 0.0034775001 0.0010091923]'] 
item = ''.join(lst) 
final_str = "[" + item + "]" 
print (final_str) 
+3

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – MattDMo

0

使用.split()和.replace()帮助:

b = ['[0.0034596999 0.0034775001 0.0010091923]'] 
b = b[0].split(' ') 
a = array([[float(x.replace('[','').replace(']','')) for x in b]]) 
print a 
[[ 0.0034597 0.0034775 0.00100919]] 

如果你想有一个清单,不要使用数组()。

2

使用replaceeval

>>> x = ['[0.0034596999 0.0034775001 0.0010091923]'] 
>>> x = [eval(x[0].replace(' ',','))] 
>>> x 
[[0.0034596999, 0.0034775001, 0.0010091923]] 

当然,你可以简单地将其转换为numpy阵列。

0

eval失败的原因是因为您认为字符串的字符串不是有效的列表表示 - 它不包含逗号。

您可以将其转换为真正的列表,方法是将方括号分开,将剩余的字符串拆分为表示数字的单独字符串,并最终将每个这样的字符串转换为数字。这里是代码:

data = ['[0.0034596999 0.0034775001 0.0010091923]'] 

s = data[0] 
for ch in "[]": # remove barckets 
    s = s.replace(ch, '') 

# splitting and converting to a list of floats 
lst = [float(x) for x in s.split()]