python - 如何在匹配前后匹配和创建字典
问题描述
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}
解决方案
您可以使用
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)} )
在这里,模式匹配
(\S+)
- 1+ 非空白字符(第 1 组,x
)\s+is\s+
-is
包含 1+ 个空格(\d+)
- 1+ 位数(第 2 组,y
)
请参阅正则表达式演示。
推荐阅读
- python - 如何使用 odoo-xml-rpc 一次在 ODOO 中创建多个值?
- java - 图像在移动时有奇怪的行为?
- java - 从另一个包访问类
- python - 为什么 print("aA".count("")) 打印值 3?
- git - 如何找到 Git repo 的版本
- swift - 从 uiimagepicker 选择时出现剪切问题
- javascript - 如果按钮只有使用 Javascript 的值和名称属性,我如何单击它
- android - OneSignal - 帮我在现有的 webView 中打开 URL ...我很困惑
- php - 仅使用 URL 登录后重定向到上一页
- scala - 如何在 Scala 中使用 Phantom-dsl 从 Apache Cassandra 同步检索数据?