Python 匹配组
我在用Python创建一个匹配组,想从一个字符串中提取两个值时遇到了问题。
这是我的输入:
# SomeKey: Value Is A String
我想用Python的匹配组或正则表达式来提取 SomeKey
和 Value Is A String
。这是我目前的尝试:
import re
line = "# SomeKey: Value Is A String"
mg = re.match(r"# <key>: <value>", line)
2 个回答
0
除非你的实际需求复杂得多,否则你可以直接使用 findall
把值提取到相应的变量中,像这样:
import re
line = "# SomeKey: Value Is A String"
key, val = re.findall(r"# (.*?): (.*)$", line)[0]
# (key, val) == ('SomeKey', 'Value Is A String')
1
你需要提供你要匹配的字符串:
import re
line = "# SomeKey: Value Is A String"
mg = re.match(r"# ([^:]+): (.*)", line)
>>> print mg.group(1)
SomeKey
>>> print mg.group(2)
Value Is A String
或者为了自动获取一个包含键和值的元组,你可以这样做:
import re
line = "# SomeKey: Value Is A String"
mg = re.findall(r"# ([^:]+): (.*)", line)
>>> print mg
[('SomeKey', 'Value Is A String')]
对于名字,你可以这样做:
mg = re.match(r"# (?P<key>[^:]+): (?P<value>.*)", line)
print mg.group('key')