如何用Python统计文本文件中以B开头且不含DUMMY的行数
统计以"B"开头且不含"DUMMY"的文本行数(Python实现)
需求场景
待处理的文本文件内容:
ADUMMY ADDRESS1 BDUMMY MEMBER AA1400 EL DORA RD BCARLOS A509 W CARDINAL AVE BJASMINE
需要编写Python脚本,统计其中**以"B"开头但不包含子串"DUMMY"**的行数。
现有代码问题
你当前的代码仅判断了行是否以"B"开头,缺少排除包含"DUMMY"子串的逻辑,需要在if条件中补充过滤规则。
修改后的代码
def countLinesMD(folder, f): counter = 0 # 使用with语句自动管理文件资源,无需手动关闭 with open(folder + f, "r") as file: # 逐行读取文件,节省内存且处理更高效 for line in file: # 去除行首尾的空白字符(包括换行符),避免空行干扰 stripped_line = line.strip() # 同时满足两个条件:以"B"开头,且不包含"DUMMY" if stripped_line.startswith("B") and "DUMMY" not in stripped_line: counter += 1 return counter
关键说明
- 核心过滤逻辑:通过
stripped_line.startswith("B") and "DUMMY" not in stripped_line同时满足开头要求和排除规则 - 文件安全处理:
with语句会在代码块结束后自动关闭文件,避免资源泄漏 - 空行规避:
strip()去掉行尾换行符和前后空白,防止文件末尾的空行被误统计 - 内存优化:逐行读取比一次性读入整个文件再拆分更适合大文件,减少内存占用
测试上述代码,针对你提供的文本会返回2(对应BCARLOS和BJASMINE两行),符合预期。
内容的提问来源于stack exchange,提问作者Ben Smith
相关产品推荐
相关产品推荐

