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

如何修改Python脚本匹配CSV文件中以‘start time =’开头的行?

匹配CSV文件中指定开头行的Python脚本优化

原脚本与需求问题

原脚本用于精准匹配某一完整行:

with open(filename) as f:
    line = f.readline()
    nline = 1
    while line.strip() != 'start time = 21.08.2022 1 11:35:04':
        line=f.readline()
        nline+=1

需求改为匹配以start time =开头的任意行,但直接修改后脚本出现冻结情况。

冻结原因

若文件中不存在符合条件的行,未做文件结束判断的循环会无限执行:当readline()读到文件末尾时返回空字符串,若循环条件仅判断行是否不匹配开头,空字符串的startswith()会返回False,导致循环持续运行,出现冻结。

可行解决方案

完全可以实现需求,只需修改循环条件,同时判断未读到文件末尾和当前行不匹配开头即可:

方案1:允许行首有空白(去除前导空白后匹配)

适合CSV文件中可能存在行首空格的场景:

with open(filename) as f:
    line = f.readline()
    nline = 1
    # 同时判断行不为空,且行(去前导空白)不以目标字符串开头
    while line and not line.lstrip().startswith('start time ='):
        line = f.readline()
        nline += 1
    
    # 循环结束后判断结果
    if not line:
        print("未找到以'start time ='开头的行")
    else:
        print(f"找到目标行,行号:{nline}")

方案2:严格匹配行开头(不允许行首空白)

如果要求目标行必须以start time =作为真正的行首:

with open(filename) as f:
    line = f.readline()
    nline = 1
    while line and not line.startswith('start time ='):
        line = f.readline()
        nline += 1
    
    if not line:
        print("未找到以'start time ='开头的行")
    else:
        print(f"找到目标行,行号:{nline}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:50:31