Python 如何将一个元素列表转换为浮动

Python 如何将一个元素列表转换为浮动,python,Python,我试图从openFoam输出日志中提取压力值 我将文件行读取为字符串,并使用以下方法提取浮点数: pressure = re.findall(r'\d+\.\d+', line) 然后,我尝试使用以下方法将字符串值转换为浮点值: press[dummy1] = [float(p1) for p1 in pressure] 我希望这会简单地给我一个浮动数组,但是我得到如下结果: [[]、[1502.79]、[1016.86]、[752.515]、[776.874]、[877.85]、[989.

我试图从openFoam输出日志中提取压力值

我将文件行读取为字符串,并使用以下方法提取浮点数:

pressure = re.findall(r'\d+\.\d+', line)
然后,我尝试使用以下方法将字符串值转换为浮点值:

press[dummy1] = [float(p1) for p1 in pressure]
我希望这会简单地给我一个浮动数组,但是我得到如下结果:

[[]、[1502.79]、[1016.86]、[752.515]、[776.874]、[877.85]、[989.854], [1139.05], [1402.28], [1305.71], [1547.23], [1389.58], [998.685], [799.895], [711.647], [1507.87], [1753.06], [1438.93], [1119.76], [1001.05], [941.412], [676.467], [772.924], [1063.77], [1537.84], [1732.5], [1342.52], [1053.91], [966.436], [1017.93], [1260.55], [1226.71], [1031.25], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

我无法对其元素进行任何数学运算,当我尝试使用以下方法转换数组的单个元素时:

something = int(press[3])
我发现以下错误:

TypeError:int()参数必须是字符串或数字,而不是“列表”


[]中的数字代表什么?它是一个元素列表还是其他什么?怎么处理呢?

因为使用
re
.findall()
函数返回一个包含匹配项的列表。如果找到none,则返回的是一个空列表,如果有内容,则返回一个包含所有结果的列表,如果您在列表中迭代值,则将得到以下两种结果之一:

  • 不存在正则表达式时的空列表
  • 存在正则表达式时的1值列表
  • 最简单的处理方法是将
    [0]
    添加到
    .findall()
    函数的结果中

    从:

    以字符串列表的形式返回字符串中模式的所有非重叠匹配项

    试试这个:

    [压力中p1的压力附加(浮动(p1))]
    
    主题的变体:如果您有一个整数、列表和空列表的“混合”列表,您可以像这样处理它:

    mixed_list = [[], [1502.79], [1016.86], [752.515], 0 , 0]
    
    result = [item[0] if isinstance(item, list) and len(item) > 0 else item for item in mixed_list]
    
    print(result)
    
    它将打印:

    [[], 1502.79, 1016.86, 752.515, 0, 0]
    
    如果您还想清除空列表,可以继续处理:

    result_without_empyt_lists = [item for item in result if item]
    
    print(result_without_empyt_lists)
    
    拥有:

    [1502.79, 1016.86, 752.515]
    

    当然,最好按照您想要的方式构造列表,如前面的答案所示,但如果您无法控制初始列表的构造方式,上述方法也可以工作。

    如果是一个元素列表,只需执行
    [0]
    获取该元素。我正在尝试从openFoam输出日志中提取压力值。请至少分享一部分数据,a。谢谢你的回答,但是它不能满足我的需要。如果我像你说的那样写,我得到的结果是:[[],[1.0],[1.0],[7.0],[7.0],[8.0],[9.0],[1.0],[1.0],[1.0],[9.0],[1.0],[1.0],[1.0],[1.0],[9.0],[6.0],[7.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1.0],[1],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0…如果为真,则需要使用[0]在findall中,在实际执行列表理解之前,因为它也会为空列表提供错误。在列表理解中执行此操作有什么意义?它不会导致列表中充满