提取特定字符后的浮点数

时间:2019-07-18 14:00:05

标签: python list file int

这是我的问题,我想让所有等号在等号后出现,但我不知道如何处理。 我所有的数字都在文件中,我将此文件放在python列表中,因此我想在等号后获取数字。 示例:“平均帧频= 22.5566” 我想要22.5566浮点数。 感谢您的帮助。

这是用于脚本的脚本,它将计算文件.txt的帧速率值的平均值

我尝试过这个:

l = []

with open("floatnumber.txt", 'r') as f:
    csv_f = csv.reader(f, delimiter=',')

    for row in csv_f:
        l.append(log(float(row[1])))

print (l)

但不起作用

我什么都没有..

我的.txt文件中有一块:

AnimatonPath completed in 0.0455575 seconds, completing 1 frames,
             average frame rate = 21.9503
AnimatonPath completed in 0.0691637 seconds, completing 1 frames,
             average frame rate = 14.4585' 

我只想要等号后的浮点数

2 个答案:

答案 0 :(得分:1)

您还可以使用正则表达式,这可能是解决问题的更强大的方法

with open("floatnumber.txt", 'r') as f:
    csv_f = csv.reader(f, delimiter=',')

    for row in csv_f:
        results = re.findall("=\s*?(\d+\.\d+|\d+)", row[2])
        l.append(log(float(results[0])))
    print (l)

别忘了使用

import re

答案 1 :(得分:0)

使用split()

l = []

with open("floatnumber.txt", 'r') as f:
    csv_f = csv.reader(f, delimiter=',')

    for row in csv_f:
        l.append(row.split('= ')[1])

print (l)

这将使用拆分中的第二个参数,换句话说,等号后面的内容。您可能还需要删除新行:

for row in csv_f:
        l.append(row.split('= ')[1].strip('\n')