我们如何转换
Python的字符串转换为列出
['[0.0034596999 0.0034775001 0.0010091923]']
到
[[0.0034596999 0.0034775001 0.0010091923]]
不带引号。我尝试使用eval,列表,元组,替换和s.strip(),但似乎没有任何工作。任何人都可以在这个
我们如何转换
Python的字符串转换为列出
['[0.0034596999 0.0034775001 0.0010091923]']
到
[[0.0034596999 0.0034775001 0.0010091923]]
不带引号。我尝试使用eval,列表,元组,替换和s.strip(),但似乎没有任何工作。任何人都可以在这个
lst = ['[0.0034596999 0.0034775001 0.0010091923]']
item = ''.join(lst)
final_str = "[" + item + "]"
print (final_str)
虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – MattDMo
使用.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]]
如果你想有一个清单,不要使用数组()。
使用replace
和eval
:
>>> x = ['[0.0034596999 0.0034775001 0.0010091923]']
>>> x = [eval(x[0].replace(' ',','))]
>>> x
[[0.0034596999, 0.0034775001, 0.0010091923]]
当然,你可以简单地将其转换为numpy
阵列。
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()]
是输入一个字符串还是一个包含字符串的列表?你的意思是结果是一个没有单引号的字符串,或者结果是一个包含一个包含浮点值或其他值的列表的列表?如果第一个,使用'replace()'方法删除所有引号。如果第二个,意识到列表的通常打印包括值之间的逗号。 –
什么是数据的来源?你如何修复它,而不是以后? –
它是一个字符串还是一个列表? –