Python正则匹配mbox-short.txt指定行的代码正确性咨询
代码正确性分析与修正方案
你当前编写的代码仅能匹配行内任意位置出现From:的内容,既没有完全符合第一个需求的匹配规则,也没有覆盖第二个需求。
需求1 正确实现
需求规则:搜索以'F'开头、后跟2个任意字符、再紧跟'm:'的行
需要用正则锚点^匹配行首,.匹配任意单个字符,对应正则为r'^F..m:'
实现代码:
import re # 优先用with语法打开文件,会自动释放文件句柄,避免资源泄露 with open("mbox-short.txt", "r", encoding="utf-8") as file_hand: for line in file_hand: line = line.rstrip() if re.search(r'^F..m:', line): print(line)
需求2 正确实现
需求规则:搜索以From开头且包含@符号的行
正则需要同时匹配行首为From、且行内存在@,对应正则为r'^From.*@'
实现代码:
import re with open("mbox-short.txt", "r", encoding="utf-8") as file_hand: for line in file_hand: line = line.rstrip() if re.search(r'^From.*@', line): print(line)
单遍历同时匹配两个需求
如果需要在同一次文件读取中同时筛选符合两个需求的行,可按以下代码实现:
import re with open("mbox-short.txt", "r", encoding="utf-8") as file_hand: for line in file_hand: line = line.rstrip() # 按需调整匹配逻辑,or是满足任意一个就输出,and是同时满足两个才输出 if re.search(r'^F..m:', line) or re.search(r'^From.*@', line): print(line)
内容的提问来源于stack exchange,提问作者Melb Jhay
相关产品推荐
相关产品推荐

