如何用Python嵌套循环从TXT文件中查找6位连续递增数字
6位连续递增数字串检索方案解答
是否需要预先生成匹配列表
如果你固定要匹配的是后一位比前一位大1、9之后循环接0的6位连续数字串,预先生成匹配列表是非常推荐的方案,优势很明显:
- 符合规则的目标串总数量只有10种,生成成本极低,后续检索直接比对即可,逻辑简单不容易出错,检索效率也高
- 你列的目标列表缺了
123456、789012两个符合规则的串,完整的目标列表可以通过代码直接生成,不需要手动拼接
如果后续你的匹配规则会调整(比如不需要9接0的循环、允许递增步长变化、长度可变),可以不用预先生成列表,遍历子串的时候直接按规则校验每个字符即可,灵活性更高。
具体实现示例(Python)
1. 生成完整目标匹配列表
target_list = [] for start_num in range(10): current_str = ''.join(str((start_num + offset) % 10) for offset in range(6)) target_list.append(current_str) # 生成的完整列表为:['012345', '123456', '234567', '345678', '456789', '567890', '678901', '789012', '890123', '901234']
2. 文本检索代码
import re # 读取文本并提取所有数字字符,过滤小数点、换行等非数字内容 with open("待检索文件.txt", "r", encoding="utf-8") as f: raw_content = f.read() digit_content = re.sub(r"\D", "", raw_content) # 遍历所有长度为6的子串匹配 match_result = [] for idx in range(len(digit_content) - 5): substr = digit_content[idx:idx+6] if substr in target_list: match_result.append(f"位置{idx}:匹配到{substr}") # 输出结果 for item in match_result: print(item)
你提供的文本检索结果
在你给出的圆周率片段中,仅匹配到1个符合规则的串:456789,出现在纯数字序列的第1952位位置。
内容的提问来源于stack exchange,提问作者Lemon
相关产品推荐
相关产品推荐

