Python 当项目包含括号时,将大字符串转换为浮动列表

Python 当项目包含括号时,将大字符串转换为浮动列表,python,Python,我有一个包含字符串的变量r,但是我需要它是一个浮点列表。这个论坛已经讨论过多次,但我似乎找不到一个与这个案例相匹配的: >>> print r [0.06481481481481466, 0.06481481481481466, 0.06481481481481466, 0.0754716981132074, 0.07619047619047604, 0.07619047619047604, 0.07692307692307698, 0.07766990291262142, 0

我有一个包含字符串的变量
r
,但是我需要它是一个浮点列表。这个论坛已经讨论过多次,但我似乎找不到一个与这个案例相匹配的:

>>> print r
[0.06481481481481466, 0.06481481481481466, 0.06481481481481466, 0.0754716981132074, 0.07619047619047604, 0.07619047619047604, 0.07692307692307698, 0.07766990291262142, 0.07766990291262142, 0.07843137254901968, 0.07920792079207928, 0.07920792079207928, 0.08000000000000007, 0.08000000000000007]
>>> type(r)
<type 'str'>
现在,r中的第一项和最后一项分别包含一个
'['
']'
。很明显,为了把它转换成一个浮点数,我需要去掉这些

这就是我一直在做的,但它似乎不起作用

def stringlist_to_floatlist(e):
    split = e.split(',')
    l = len(split)
    for i in split:
        for br in ["[","]"]:
            if br in i:
                try:
                    i = float(i.replace(br,""))
                except TypeError:
                    continue
            else:
                try:
                    i = float(i)
                except TypeError:
                    continue
    return i 


>>> stringlist_to_floatlist(r)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 6, in stringlist_to_floatlist
TypeError: argument of type 'float' is not iterable
def stringlist_至_floatlist(e):
split=e.split(',')
l=长度(分割)
对于拆分中的i:
对于[“[”,“]”中的br:
如果br在i中:
尝试:
i=浮动(i.替换(br,“”)
除类型错误外:
持续
其他:
尝试:
i=浮动(i)
除类型错误外:
持续
返回i
>>>字符串列表\u到\u浮动列表(r)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第6行,在stringlist\u至\u浮动列表中
TypeError:类型为“float”的参数不可编辑

这里的其他答案效果很好,但由于您似乎是从外部源获取此字符串,因此很可能是在解析格式化字符串。Python具有内置的json解析器,因此您只需执行以下操作:

>>> import json
>>> r = """[0.06481481481481466, 0.06481481481481466, 0.06481481481481466, 0.0754716981132074, 0.07619047619047604, 0.07619047619047604, 0.07692307692307698, 0.07766990291262142, 0.07766990291262142, 0.07843137254901968, 0.07920792079207928, 0.07920792079207928, 0.08000000000000007, 0.08000000000000007]"""
>>> json.loads(r)
[0.06481481481481466, 0.06481481481481466, 0.06481481481481466, 0.0754716981132074, 0.07619047619047604, 0.07619047619047604, 0.07692307692307698, 0.07766990291262142, 0.07766990291262142, 0.07843137254901968, 0.07920792079207928, 0.07920792079207928, 0.08000000000000007, 0.08000000000000007]
>>> type(json.loads(r))
list

这里的其他答案很有效,但由于您似乎是从外部源获取此字符串,因此很可能是在解析格式化字符串。Python具有内置的json解析器,因此您只需执行以下操作:

>>> import json
>>> r = """[0.06481481481481466, 0.06481481481481466, 0.06481481481481466, 0.0754716981132074, 0.07619047619047604, 0.07619047619047604, 0.07692307692307698, 0.07766990291262142, 0.07766990291262142, 0.07843137254901968, 0.07920792079207928, 0.07920792079207928, 0.08000000000000007, 0.08000000000000007]"""
>>> json.loads(r)
[0.06481481481481466, 0.06481481481481466, 0.06481481481481466, 0.0754716981132074, 0.07619047619047604, 0.07619047619047604, 0.07692307692307698, 0.07766990291262142, 0.07766990291262142, 0.07843137254901968, 0.07920792079207928, 0.07920792079207928, 0.08000000000000007, 0.08000000000000007]
>>> type(json.loads(r))
list

尽管python有解析json和其他格式的特定工具,但如果您有一个字符串,该字符串通常在开头和结尾用一些字符括起来,您可以使用
strip
字符串内置项指定这些字符:

>>> s = '[4.4,3.2,1.1]'
>>> s.strip('[]')
'4.4,3.2,1.1'
>>> s = '[I am not: a ; valid .,:{json string]'
>>> s.strip('[]')
'I am not: a ; valid .,:{json string'

尽管python有解析json和其他格式的特定工具,但如果您有一个字符串,该字符串通常在开头和结尾用一些字符括起来,您可以使用
strip
字符串内置项指定这些字符:

>>> s = '[4.4,3.2,1.1]'
>>> s.strip('[]')
'4.4,3.2,1.1'
>>> s = '[I am not: a ; valid .,:{json string]'
>>> s.strip('[]')
'I am not: a ; valid .,:{json string'

这正是我正在做的,通过csv文件加载。现在这很有道理!谢谢这正是我正在做的,通过csv文件加载。现在这很有道理!谢谢