У меня есть:

s=  'Lot Size: 1.52 acres'

Я хочу вернуть только число с плавающей точкой (1,52)

Я устал:

>>> o =[s for s in str.split('') if s.isdigit() if s=='.']
>>>

>>>o
>>>[]

Как я могу заставить это работать?

2
user61629 8 Июл 2019 в 20:06

4 ответа

Лучший ответ

Вы можете попробовать следующее с единственным условием и в соответствии с вашим исходным форматом ( с использованием python 3.6.8 ) :)

Синтаксис нескольких условий:

[ x for x in x.do() if 'x' in x OR/AND if x == 1]

< Сильный > Пример:

s = 'Lot Size: 1.52 acres'

o = [s for s in s.split(' ') if '.' in s]

print(o[0])

< Сильный > Вывод :

1.52
1
D Silveiro 9 Июл 2019 в 12:32

Еще один способ сделать это с помощью регулярных выражений:

import re

s='Lot Size: 1.52 acres'
result = float(re.findall("[0-9]+\.[0-9]+", s)[0])
print(result)

Это даст вам:

1.52

Или, если вы хотите получить список с плавающей точкой в результате:

result = list(map(float,(re.findall("[0-9]+\.[0-9]+", s))))
2
Vasilis G. 8 Июл 2019 в 17:26

Пытаться

o = float(s.split(':')[1].split('acres')[0].strip())
0
Steven Rumbalski 8 Июл 2019 в 17:49

Это назначит o список «слов» в msg, которые можно интерпретировать как float:

def isFloat(n):
    try:
        return float(n)
    except:
        return None

o = list(filter(isFloat,msg.split()))
5
Scott Hunter 8 Июл 2019 в 17:15