regex - 跳过字典中的短字母/单词组合
问题描述
d = {'E1': ['Fish','1B', '12C35','53901','AB3', '11Rs', 'C140','funny', '2ml', '5mm', '1a'],
'E2': ['Jon','521','ag14', 'O2', 'Sp02', 'fun', '1245A444', 'BAK1', 'TA42']}
我有以下字典d
。我不想让字母/数字混合4 个字符或更短,例如'1B'
或 AB3'
或'C140'
等都将被跳过。我想要以下输出:
d = {'E1': ['Fish','12C35','53901', 'funny'],
'E2': ['Jon','521', 'fun', '1245A444']}
为了得到我想要的上面的输出,我不确定正则表达式是否会是答案或类似的东西,保持字典值大于五的长度(但这并没有给我想要的输出)。任何人都可以帮忙吗?
解决方案
您可以使用以下代码:
>>> dd={}
>>> for k, v in d.items():
... dd[k] = [x for x in v if re.search(r'^(?:\d+|[a-zA-Z]+)$', x) or len(x) > 4]
...
>>> print (dd)
{'E1': ['Fish', '12C35', '53901', 'funny'], 'E2': ['Jon', '521', 'fun', '1245A444BAK1']}
如果每个值满足以下两个条件中的任何一个,则此代码迭代原始字典并将值存储在新字典中:
- 仅由数字或字母组成。
- 长度大于 4。
推荐阅读
- python - 我怎么可能在 outer() 函数中调用嵌套的 len() 函数
- networking - Graphviz:如何在另一个上创建重叠子节点?
- php - 复杂的循环通过复杂的 SimpleXMLElement
- batch-file - 批处理文件读取文件并执行某些操作
- python-3.x - 以 numpy 数组作为输入的函数的多处理
- javascript - 如何简化我的代码,使用 javascript 将 div 隐藏在 html 中?
- java - 给定方法的所有出口点的 JDI 位置
- node.js - 套接字在 supertest mongodb 节点 REST API 中挂起
- symfony - 重新加载页面时背景图像重复两次
- go - 什么是时间戳中的“m”以及如何在没有“m”的情况下获取时间戳?