帮助朋友使用专有工具中的一些继承代码。
我们都不太熟悉 Python 或 Regex。
在下面的代码中,当我使用 Pythex ( http://pythex.org/ )时,degF 正则表达式匹配 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)
您.
在模式中用于匹配度数符号。但是, a.
匹配单个字节,而°
实际上是两个字节长:
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']
您可以将 unescaped)
移到 right after\d+
以仅匹配整数。您可以更改\d
为\d[\d.]*
匹配浮点数或整数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句