Извлечь поплавок из строки Python - PullRequest
0 голосов
/ 09 июля 2019

У меня есть строка, которая выглядит следующим образом:

'< 5s' or '< 0.5s'

И я пытаюсь извлечь «продолжительность» из строки.У меня уже есть это:

a = '< 5s'
b = int(list(filter(str.isdigit, a))[0])
print(b)

, но если я использую '< 0.5s', он возвращает мне 0.Как я могу включить , с номером?

Ответы [ 4 ]

2 голосов
/ 09 июля 2019

Простое b = float(a[2:-1]) должно сработать, если вы уверены, что строка всегда отформатирована в точности так, как показано в вашем примере.

2 голосов
/ 09 июля 2019

С простым регулярным выражением:

import re

s = '< 0.5s'
dur = re.search(r'-?\d+(\.\d+)?', s).group()
print(dur)   # 0.5
1 голос
/ 09 июля 2019
import re
b = re.sub("[^\d\.]", "", a)
0 голосов
/ 09 июля 2019

Вы можете использовать regex, может быть что-то вроде этого:

#!/usr/bin/python3
import re
inp="< 0.5s 5s -12z34 -6.7s"
for i in re.findall("-?\d+\.\d+|-?\d+", inp):
    print(i)
...