帮助 friend 使用专有工具中的一些继承代码。
我们都不太熟悉 Python 或 Regex。
在下面的代码中,degF 正则表达式在我使用 Pythex (http://pythex.org/) 时匹配 2 个组,但返回 None。我做错了什么?
# This Python file uses the following encoding: utf-8
import os, sys
import re
testString = "Friday: Thundery Shower, Maximum Temperature: 27°C (81°F) Minimum Temperature: 17°C (63°F)"
t = re.match("^([^:]+):\s*([^,]+)", testString)
degF = re.match("^(\d+.F\))", testString)
print t . # _sre.SRE_Match object
print t.group(1) # Friday
print t.group(2) # Thundery Shower
print degF # None
# print "Max temp " + degF.group(1)
# print "Min temp " + degF.group(2)
请您参考如下方法:
您在模式中使用了 . 来匹配度数符号。但是,. 匹配单个字节,而 ° 实际上是两个字节长:
print len('°') # => 2
因此,您可以在 degF 模式(或 \W*)中使用 ° 而不是 .匹配零个或多个非单词字符,即 r"(\d+\W+F)\)"),到处使用 re.search 并删除 ^ 如果您不打算只在字符串的开头匹配:
degF = re.findall(r"(\d+°F)\)", testString)
print(degF) # => ['81\xc2\xb0F', '63\xc2\xb0F']
参见 Python demo
您可以将未转义的 ) 移到 \d+ 之后以仅匹配整数。您可以将 \d 更改为 \d[\d.]* 以匹配 float 或整数。
