从字符串中提取温度(celcius或fahrenheit)

时间:2017-02-21 13:43:45

标签: python regex string

我正在使用(char.*?char2)来提取以char1开头并以字符串char2结尾的子部分。

现在我想提取温度信息,例如(40°C,-30°C,80°F)来自一根绳子。在这种情况下,我的正则表达式应该通过考虑+-的概率以及°C°F的结尾来定义带有任何数字字符的起始字符,以及中间不应该有任何字母,并且在数字和结尾之间也应该有whitespace字符。

如何定义这样的正则表达式?

我已经检查了这个,Regex to extract temperatures and temperature ranges from a string,但答案略有不同的目标。

1 个答案:

答案 0 :(得分:5)

(\d+) ?°([CF])

第一组应具有温度,第二组应具有温度,

扩展它以允许更多变化:

([+-]?\d+(\.\d+)*)\s?°([CcFf])

这将匹配any of these输入,允许多个空格或制表符,小写单位,小数点和符号。

示例python程序:

import re
string = '''
20°C
2 °F
It was cold, 2 °F in fact.
30 °C
-40 °C
+2.3^I°c
+2.3°c
10°C
'''
pattern = r'([+-]?\d+(\.\d+)*)\s?°([CcFf])'
print(re.findall(pattern, string))
# Output:
# [('20', '', 'C'), ('2', '', 'F'), ('2', '', 'F'), ('30', '', 'C'),
# ('-40', '', 'C'), ('+2.3', '.3', 'c'), ('+2.3', '.3', 'c'),
# ('10', '', 'C')]