如何将含startswith的代码改用正则实现?及字典值正则提取需求
用正则替代
startswith()提取字典键的实现方案 嘿,刚好可以帮你把这段基于startswith()的代码转换成正则实现,效果完全等价,下面是具体步骤和代码:
你原来的列表推导式思路很清晰,我们只需要把str(v).startswith('12')替换成正则匹配逻辑就行:
- 先导入Python的正则模块
re - 使用
re.match()配合正则表达式^12来匹配以12开头的字符串(^在正则里表示字符串的起始位置)
具体代码如下:
import re test = {'name': 'a','num': '1234','num2':'5678', 'num3':'0142'} # 正则版本的列表推导式 result = [k for k, v in test.items() if re.match(r'^12', str(v))] print(result) # 输出: ['num']
小补充说明:
re.match()会从字符串的开头开始匹配,这和startswith()的行为完全一致,刚好满足你的需求- 正则表达式
^12的含义就是:匹配以12作为开头的任意字符串,后面的内容不做限制 - 如果之后需要扩展匹配规则(比如忽略大小写、匹配特定长度的后续字符),正则的灵活性会比
startswith()更强
内容的提问来源于stack exchange,提问作者user6882757
相关产品推荐
相关产品推荐

