如何从多个字符包围的字符串中提取浮点数?

How to extract floating point numbers from strings surrounded by multiple characters?

我需要知道如何提取方括号和撇号内的浮点数。

这是我的data.state

   state: {
      "command_args" : {
        "position" : 94.9838180542
      },
      "error_flags" : 0
      "op_mode" : 4
    }

我只想提取数字 94.9838180542,这就是我写的:

   182               splitData = (data.state.split("}")[0])
   183               splitdata = ( re.findall("\d+\.\d+",splitData)  ) #Floating Point Number 
   184               print(splitdata)

我的输出是:

['94.9838180542']

所需输出:

94.9838180542

如何删除“[]”和撇号并从中提取整个浮点数?

谢谢

re.findall returns 字符串列表

if len(splitdata) > 0:
    num = float(splitdata[0])

为了严格回答提出的问题,我会给出如何修复它的代码。

print(float(splitdata[0]))

但是,如果有多个浮点数,这段代码将不起作用,所以这就是我推荐的原因:

print([float(item) for item in splitdata])

第二个代码位不会删除 [],但如果文本中有多个浮点数,它会将它们全部正确转换为浮点数。

最后注意:你真的应该确保你输入的 json 是正确的,并使用 Python:

中内置的 json 函数

https://docs.python.org/2/library/json.html