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

Python读取含序列与模式的文本文件:正确的数据读取与赋值方法

序列模式匹配:正确的数据读取与赋值方式

首先,咱们先梳理下你的代码里的两个核心问题:一个是模式匹配的逻辑错误,另一个是需要根据输入文件的格式调整数据读取的方式。

一、先修正pattern_count函数的逻辑问题

原函数里的循环范围和切片写法都有错误,会导致匹配结果不准确:

  • 循环范围应该是range(len(text)-len(pattern)+1):因为最后一个可能的匹配起始位置是len(text)-len(pattern),比如文本长度13、模式长度3时,最后一个起始索引是10,所以循环范围要包含这个位置,否则会漏掉最后一次可能的匹配。
  • 切片应该是text[i:i+len(pattern)]:原代码里的text[i:len(pattern)]只会从索引i取到索引len(pattern)-1的位置,完全不符合匹配逻辑。

修正后的函数如下:

def pattern_count(text, pattern):
    count = 0
    pattern_len = len(pattern)
    text_len = len(text)
    # 循环范围包含所有可能的起始位置
    for i in range(text_len - pattern_len + 1):
        if text[i:i+pattern_len] == pattern:
            count += 1
    return count

二、正确的读取数据与赋值方式

数据读取的正确写法,取决于你的输入文件格式,常见的两种场景如下:

场景1:序列和模式在同一行,用空格分隔(比如文件内容是agcdttagcdtcc agc)

你的原代码里的split()方法是可行的,但可以加一点容错处理,避免因输入格式错误导致索引越界:

import sys

def pattern_count(text, pattern):
    count = 0
    pattern_len = len(pattern)
    text_len = len(text)
    for i in range(text_len - pattern_len + 1):
        if text[i:i+pattern_len] == pattern:
            count += 1
    return count

# 读取并清理输入内容
input_content = sys.stdin.read().strip()
data = input_content.split()
# 确保输入包含至少两个数据项
if len(data) >= 2:
    text = data[0]
    pattern = data[1]
    print(pattern_count(text, pattern))
else:
    print("输入格式错误,请确保序列和模式用空格分隔在同一行")

场景2:序列在第一行,模式在第二行(比如文件第一行是agcdttagcdtcc,第二行是agc)

这种情况下,应该按行读取输入内容:

import sys

def pattern_count(text, pattern):
    count = 0
    pattern_len = len(pattern)
    text_len = len(text)
    for i in range(text_len - pattern_len + 1):
        if text[i:i+pattern_len] == pattern:
            count += 1
    return count

# 按行读取并过滤空行
lines = [line.strip() for line in sys.stdin if line.strip()]
if len(lines) >= 2:
    text = lines[0]
    pattern = lines[1]
    print(pattern_count(text, pattern))
else:
    print("输入格式错误,请确保序列在第一行,模式在第二行")

测试示例数据

用你的示例序列agcdttagcdtcc和模式agc,正确匹配次数是2次(起始位置0和6),修正后的代码会输出正确结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:15:58