Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 3中,如何从字符串中提取浮点值?_Python_Python 3.x_String_File_Extract - Fatal编程技术网

在python 3中,如何从字符串中提取浮点值?

在python 3中,如何从字符串中提取浮点值?,python,python-3.x,string,file,extract,Python,Python 3.x,String,File,Extract,字符串=概率为0.05 如何提取变量中的0.05浮点值?文件中有很多这样的字符串,我需要找到平均概率,所以 我用了“for”循环。 我的代码: fname = input("enter file name: ") fh = open(fname) count = 0 val = 0 for lx in fh: if lx.startswith("probability"): count = count + 1 val

字符串=概率为0.05 如何提取变量中的0.05浮点值?文件中有很多这样的字符串,我需要找到平均概率,所以 我用了“for”循环。 我的代码:

fname = input("enter file name: ")
fh = open(fname)
count = 0
val = 0
for lx in fh:
    if lx.startswith("probability"):
        count = count + 1
        val = val + #here i need to get the only "float" value which is in string
print(val)
好的,那么。 这是使用正则表达式(aka Regex aka re)库

它基本上建立一个模式,然后在字符串中搜索它。 此函数接收字符串并查找字符串中的第一个数字,然后返回变量prob,该变量将是从第一个数字到最后的字符串

如果您需要多次找到概率,那么这可能会做到:

import re
string='probability is 1'
string2='probability is 1.03 blah blah bllah probablity is 0.2 ugggggggggggggggg probablity is 1.0'
def FindProb(string):
    amount=string.count('.')
    prob=0
    for i in range(amount):
        pattern=re.compile('[0-9]+[.][0-9]+')
        result=pattern.search(string)
        start=result.span()[0]
        end=result.span()[1]

        prob+=float(string[start:end])
        string=string[end:]
    return(prob)

print(FindProb(string2))

需要注意的是,一切都必须有一个周期,因此1必须是1.0,但这不应该是一个太大的问题。如果是,请告诉我,我会设法找到一种方法

这是否回答了您的问题?您遗漏了重要的部分:字符串外观的完整示例。通过猜测它会说它类似于
'probability 0.71'
float(lx.strip().split()[-1])
import re
string='probability is 1'
string2='probability is 1.03 blah blah bllah probablity is 0.2 ugggggggggggggggg probablity is 1.0'
def FindProb(string):
    amount=string.count('.')
    prob=0
    for i in range(amount):
        pattern=re.compile('[0-9]+[.][0-9]+')
        result=pattern.search(string)
        start=result.span()[0]
        end=result.span()[1]

        prob+=float(string[start:end])
        string=string[end:]
    return(prob)

print(FindProb(string2))