2012-04-07 2 views
1

Этот, надеюсь, простой, у меня есть строка «Напряжение равно E = 200 В, а ток I = 4,5 А». Мне нужно извлечь оба значения float. Я попытался использовать функцию float() (с подстрокой от 11 до 16 в параметрах), но я получаю сообщение об ошибке. Я понимаю, что это, вероятно, не очень хорошее кодирование, я на начальных этапах пытаюсь изучить Python. Буду признателен за любую оказанную помощь.Поиск float in s string-Python

редактировать: Вот код

I = 0.0  
if((currentString.find('I=')) != -1): 
      I = float(currentString[(currentString.find('I=')):(currentString.find('A'))]) 

снова, им новое на этом языке, и я знаю, что выглядит некрасиво.

+0

Можете ли вы показать нам свой код? 's = '200'; float (s) 'должен работать. – George

+0

подстрока 'E = 200V', которая не является допустимым поплавком. Вам нужно быть более конкретным, вам нужно включить код, и вам нужно включить ошибку, которую вы получите с трассировкой. –

+0

Я не уверен, что это работает для вас: http://ideone.com/ynjW3. Расскажите подробнее о вашей ошибке, если вы столкнулись с ней. – George

ответ

2

Я не хочу упоминать регулярные выражения, так как это часто путающий инструмент для новичков, но для вашего использования и ссылки здесь приведен фрагмент, который поможет вам получить эти значения. Напряжение IIRC вряд ли будет float (вместо int?), Так что эта сопоставимая операция возвращает int позже, но может быть плавающей, если это действительно необходимо.

>>> import re 
>>> regex = re.compile(r'.*?E=([\d.]+).*?I=([\d.]+)') 
>>> re.match('voltage is E=200V and the current is I=4.5A') 
>>> matches = regex.match('voltage is E=200V and the current is I=4.5A') 
>>> int(matches.group(1)) 
200 
>>> float(matches.group(2)) 
4.5 

Способ извлечения таких чисел с помощью более простых инструментов является:

>>> s.find('E=') 
11 
>>> s.find('V', 11) 
16 
>>> s[11:16] 
'E=200' 
>>> s[11+2:16] 
'200' 
>>> int(s[11+2:16]) 
200 
+0

Спасибо! Я как бы безумный, я не мог думать об этом: /, но спасибо многому человеку – MellowFellow

+0

Вы можете добавить '-' между [], если напряжения или амперы могут быть отрицательными. Я не инженер-электрик. ;) – Kurt