python-3.x - 列表中的 Python 模式自动匹配
问题描述
我正在尝试编写一个小脚本来将具有相似模式的字符串组合在一起。以下是我的程序片段,它工作正常,但有点不准确。
lst = ["report-2020.10.13", "report-2020.12.12", "analytics-2020.12.14", "sales-cda87", "analytics-2020.11.21", "sales-vu7sa"]
final = []
for pat in lst:
pat = pat[:len(pat) // 2]
ils = []
for pat2 in lst:
if pat2.startswith(pat):
ils.append(pat2)
final.append(tuple(ils))
finalls = list(set(final))
for f in finalls:
print(f)
另外,我想要对字符串进行分组的确切字符串模式。例如,从["rep-10-01", "rep-10-02", "rep-11-06"]
我想要的字符串列表中"rep-"
作为模式。是否需要改进?或者任何可以帮助我解决第一个和第二个问题的库/模块?提前致谢。
解决方案
这是否按您的预期工作:
from collections import defaultdict
res = defaultdict(str)
lst = ["report-2020.10.13", "report-2020.12.12", "analytics-2020.12.14",
"sales-cda87", "analytics-2020.11.21", "sales-vu7sa"]
#ll = ['rep-10-01', 'rep-10-02', 'rep-11-06']
for pat in lst:
pattern = pat.split('-')
#print(pattern[0]) # real pattern - eg. report, sales, analytics
res[pattern[0]] += pat+ ', '
print(res)
Output:
defaultdict(<class 'str'>, {'report': 'report-2020.10.13, report-2020.12.12, ', 'analytics': 'analytics-2020.12.14, analytics-2020.11.21, ', 'sales': 'sales-cda87, sales-vu7sa, '})
推荐阅读
- python - 使用python去除一堆文件中的短语
- oracle - 甲骨文中的多次插入只能触发一次吗?
- arrays - 过滤一个数组,其中第一个数组中的值包含打字稿中第二个数组中的值
- php - 子菜单点击列表其他下拉列表
- sql-server - SQLCMD:我们可以在输出文件中加上双引号吗?
- php - wordpress wp_insert_post 将页面添加到菜单
- android - 如何制作类似于 Ruby <=> 的运算符(又名:spaceship)
- javascript - 如何在 GET 请求中发送 x-csrf-token?
- java - Java 错误消息。意外的类型、必需的变量、找到的值
- kubernetes-helm - 如何查看 Helm 版本中使用了哪些自定义值?