Как я могу извлечь значение с плавающей запятой из строки в python 3? - PullRequest
0 голосов
/ 13 июля 2020

строка = вероятность 0,05, как мне извлечь 0,05 значения с плавающей запятой в переменную? В файле много таких строк, мне нужно найти среднюю вероятность, поэтому я использовал 'вместо' l oop. мой код:

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)

1 Ответ

0 голосов
/ 14 июля 2020
import re
string='probability is 1'
string2='probability is 1.03'
def FindProb(string):

    pattern=re.compile('[0-9]')
    result=pattern.search(string)
    result=result.span()[0]

    prob=string[result:]
    return(prob)

print(FindProb(string2))

Хорошо, итак. Здесь используется библиотека регулярных выражений (также известная как Regex или 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, но это не должно быть большой проблемой. Если да, дайте мне знать, и я постараюсь найти способ

...