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

Python2.7无法提取file1.txt中指定Git提交信息行的问题

解决Python 2.7提取指定提交信息行的问题

看起来你的代码没能匹配到目标行,核心问题是正则表达式大小写不匹配,还有一些可以优化的细节,我来一步步帮你修正:

问题分析

你的目标行是:

Commit message: "Added parameter for jmeter for Jenkins"

但代码里用的正则是'^Commit Message'——注意这里的Message是大写M,而目标行里是小写的message,这就导致正则完全匹配不到任何行,最终indexofGitMsgList是空列表,调用max()时还会抛出ValueError。

另外,读取文件时每行可能包含换行符,直接匹配也可能受干扰,最好先做去除首尾空白的处理。

修正方案

方案1:修正正则并优化匹配逻辑

import re

# 读取文件内容,按行分割
with open('file1.txt', 'r') as f:
    message = f.readlines()

# 修正正则:匹配小写的message,同时忽略大小写(可选,增强容错)
indexofGitMsgList = [
    gin for gin, item in enumerate(message) 
    if re.search(r'^Commit message:', item.strip(), re.IGNORECASE)
]

if indexofGitMsgList:
    # 取最后一个匹配的行索引
    indexofGitMsg = max(indexofGitMsgList)
    gitMsg = message[indexofGitMsg].strip()  # 去除换行和首尾空格
    print(gitMsg)
else:
    print("未找到包含'Commit message:'的行")

方案2:更简洁的遍历写法(推荐)

不需要生成索引列表,直接遍历文件时记录最后一个匹配的行,更高效:

with open('file1.txt', 'r') as f:
    target_msg = None
    for line in f:
        stripped_line = line.strip()
        # 精确匹配开头,也可以用re.IGNORECASE忽略大小写
        if stripped_line.startswith('Commit message:'):
            target_msg = stripped_line

if target_msg:
    print(target_msg)
else:
    print("目标提交信息行未找到")

额外提示

  • 如果目标行可能有大小写变化(比如COMMIT MESSAGE:或commit message:),可以用re.IGNORECASE参数忽略大小写匹配,增强代码的容错性。
  • 用strip()处理每行的首尾空白(包括换行符、空格),避免因格式问题导致匹配失败。

内容的提问来源于stack exchange,提问作者Vageesh S M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:33:13