如何用Python正则表达式统计HH:MM:xx格式的唯一时间前缀数量
问题分析
你现有代码存在两个核心问题:
- 你将整行内容存入列表,而非匹配到的时间的
HH:MM前缀 - 普通列表会保留所有重复值,无法自动统计唯一值
修改后的代码
import re # 正则可直接捕获HH:MM前缀部分,也可沿用你原来的分组写法 pattern = re.compile(r"(\d{2}:\d{2}):\d{2}") path = r'C:\Users\CL\Desktop\abc.txt' # 用set集合存储前缀,自动去重,重复前缀只会保留1份 unique_prefix = set() # 用with open语法自动管理文件句柄,避免资源泄漏 with open(path, 'r', encoding='utf-8') as f: for line in f: for match in re.finditer(pattern, line): # 直接取分组1就是HH:MM前缀 prefix = match.group(1) unique_prefix.add(prefix) # 集合的长度就是唯一前缀的数量 print(len(unique_prefix)) # 样例输入输出为2
代码说明
如果沿用你原来的正则写法"(\d{2}):(\d{2}):(\d{2})",只需要把前缀拼接逻辑改成f"{match.group(1)}:{match.group(2)}"即可,运行效果完全一致。
内容的提问来源于stack exchange,提问作者panzers1
相关产品推荐
相关产品推荐

