首页 > 解决方案 > 如何在匹配前后匹配和创建字典

问题描述

import re
s = 'A boy is 31 and girl is 22.'
print(re.findall(r'\S+(?=\s+is\b)', s))

出> ['男孩','女孩']

print (re.findall(r'\S+(?=\s+)is(?:\s*\S+|$)',s))

出> []

如果我出去了,['boy',31,'girl',22]那我可以做 b = dict(zip(list_[::2], list_[1::2]))

Expected Out > {'boy':31, 'girl':22}

标签: pythonregexdictionary

解决方案


您可以使用

import re
s = 'A boy is 31 and girl is 22.'
print(dict([(x,int(y)) for x, y in re.findall(r'(\S+)\s+is\s+(\d+)', s)]))
## Or, with dictionary comprehension
print( {x:int(y) for x, y in re.findall(r'(\S+)\s+is\s+(\d+)', s)} )

查看Python 演示

在这里,模式匹配

  • (\S+)- 1+ 非空白字符(第 1 组,x
  • \s+is\s+-is包含 1+ 个空格
  • (\d+)- 1+ 位数(第 2 组,y

请参阅正则表达式演示


推荐阅读