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

Python中如何检测序列指定窗口内是否包含换行符

问题分析与解决方案

从你给出的示例来看,真实需求应该是:判断字符串的前10个字符内是否包含换行符\n。你的原代码逻辑是检查所有可能的10字符窗口,只要任意一个窗口包含换行符就返回True,这会错误地将换行符出现在字符串后半部分的案例判定为符合条件(比如第一个标记为false的字符串)。

修改后的代码

方案一:直接检查前10个字符

针对你的示例需求,函数可以简化为直接判断前10字符内是否存在换行符:

def has_newline_in_first_window(s, window=10):
    # 截取前window个字符,检查是否包含换行符
    return "\n" in s[:window]

my_list = ["KKAWTMYGNLSKKDQNRYNA\nDAT", # false
           "EEQLLNEPD\nKIVIIPACVIDELEENKKLKGLEEILKKVRRA", #true
           "NNCLQKYKEAEEYYEESIFILKTVN", # false
           "EEQLLNEPD\nKIVIIPACV\nIDELEENKKLKGLEEILKKVRRA", #true
           "NNCLQKYKEAEEYY\nEESIFILKTVN", # false
        ]

for sequence in my_list:
    if has_newline_in_first_window(sequence):
        print(sequence)

方案二:修正原遍历逻辑(若需求为检查任意窗口)

如果你的真实需求是检查字符串中是否存在任意一个10字符窗口包含换行符(此方案与你的示例预期不符,仅作补充),原代码的循环范围存在错误,需要调整为覆盖所有可能的窗口:

def has_newline_within_window(s, window=10):
    # 修正循环范围,确保最后一个窗口也被遍历到
    for i in range(len(s) - window + 1):
        if "\n" in s[i:i + window]:
            return True
    return False

验证结果

运行方案一的代码,会输出你预期的两个符合条件的字符串:

EEQLLNEPD
KIVIIPACVIDELEENKKLKGLEEILKKVRRA
EEQLLNEPD
KIVIIPACV
IDELEENKKLKGLEEILKKVRRA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:24:53