2014-12-13 2 views
0

До этого месяца мой наружный монитор температуры/влажности DHT22 работал нормально. Тем не менее, с холодной погодой и температурами теперь меньше нуля, я заметил, что моя рутина не справляется с отрицательными температурами - вместо этого они представлены как позитивные: знак потерян.Отображение подписанных поплавков в Python

Я регулировать свою re.search процедуру, чтобы включить отрицательные числа, где ранее они были исключены,

# Continuously append data 
while(True): 
# Run the DHT program to get the humidity and temperature readings! 
# DHT22 (Credit to Adafruit) 
output = subprocess.check_output(["/home/pi/scripts/DHT/Adafruit_DHT", "22", "25"]); 
rasp = subprocess.check_output(["vcgencmd", "measure_temp"]) 
print output 
matches = re.search("Temp =\s+-([0-9.]+)", output) 
if (not matches): 
     time.sleep(3) 
     continue 
tempa = float(matches.group(1)) 
print tempa 

Когда я

print output 

строка получается содержащая отрицательную температуру.

Однако, когда я

print tempa 

отображается как положительное число.

Мне нужно иметь возможность переносить знак в переменную, так как температура может быть положительной или отрицательной (даже в зимний период в Великобритании).

Может ли кто-нибудь помочь?

ответ

2

Отрицательный знак не отображается в группе, так как в настоящее время он не является его частью.

"Temp =\s+(-[0-9.]+)" 
     ^fix 
0

Я просто попытался его, и только «-» знак не достаточно .. Если вы хотите измерить положительные и отрицательные температуры, регулярное выражение строка должна выглядеть следующим образом:

"Temp =\s+([-+]?[0-9.]+)" 
Смежные вопросы