You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用Python正则表达式如何统计文件中'CDS'的总出现次数?

常见操作误区排查
  • 未正确加载文件内容:正则是针对纯文本字符串做匹配,若直接将文件路径传入re.findall,实际匹配的是路径字符串本身,根本不会读取文件内的内容,自然得不到预期匹配数
  • 正则匹配范围过宽:直接使用r'CDS'会把所有位置出现的CDS子串都纳入统计,包括注释文本里提到的CDS、其他字段中附带的CDS片段,最终结果和预期仅统计特征标识CDS的目标不一致
可复现的正确实现

基础版本:统计所有独立出现的CDS字符串

通过单词边界匹配排除带CDS的其他复合字符串,比如CDS123、myCDS这类内容不会被误统计:

import re

# 替换为你的实际文件路径
target_file = "your_file_path.txt"

# 读取文件全部文本内容
with open(target_file, 'r', encoding='utf-8') as f:
    file_text = f.read()

# 匹配独立边界的CDS字符串
cds_matches = re.findall(r'\bCDS\b', file_text)
cds_total = len(cds_matches)

print(f"CDS总出现次数: {cds_total}")

严格匹配版本:适配GenBank格式的特征行CDS统计

你的文件格式属于典型的GenBank平面文件格式,若需要严格只统计作为特征字段的CDS行(排除注释等其他位置的CDS提及),可以使用行匹配规则,开启多行匹配模式:

import re

target_file = "your_file_path.txt"

with open(target_file, 'r', encoding='utf-8') as f:
    file_text = f.read()

# 匹配行首为空白字符、后接CDS、再接空白字符的特征行
cds_matches = re.findall(r'^\s+CDS\s', file_text, flags=re.MULTILINE)
cds_total = len(cds_matches)

print(f"特征行CDS总出现次数: {cds_total}")
样本验证

针对你提供的示例内容,上述两个版本的统计结果均为2,和你的预期完全匹配。

内容的提问来源于stack exchange,提问作者Meems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 17:27:05