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

Python技术问询:提取特定词后字符串及完善JIRA工单描述代码

解决你的两个Python技术需求

需求1:提取文本行中特定单词之后的字符串

这里有两种实用的方法,你可以根据场景灵活选择:

方法1:用字符串split()方法(简单直接)

这种方法适合目标单词唯一,或者你只需要第一次出现该单词后内容的场景。示例代码:

text_line = "User requested: install Python 3.10 and configure virtual environment"
target_word = "requested:"

# 只分割一次,取第二部分并去除首尾空格
result = text_line.split(target_word, 1)[1].strip()
print(result)  # 输出: install Python 3.10 and configure virtual environment

注意:如果目标单词不在文本里,直接取[1]会报错,建议加个判断兜底:

if target_word in text_line:
    result = text_line.split(target_word, 1)[1].strip()
else:
    result = ""  # 或者按你的需求处理“单词不存在”的情况

方法2:用正则表达式(适配复杂场景)

如果目标单词前后有不确定的字符(比如大小写、空格、特殊符号),正则会更灵活。示例:

import re

text_line = "INFO: 2024-05-20 - Task Completed: data processing finished"
target_word = "completed:"

# 自动转义目标单词的特殊字符,匹配不区分大小写
pattern = re.compile(re.escape(target_word) + r"\s*(.*)", re.IGNORECASE)
match = pattern.search(text_line)

if match:
    result = match.group(1).strip()
    print(result)  # 输出: data processing finished
else:
    result = ""

re.escape()会自动处理目标单词里的特殊字符(比如冒号、点号),避免正则语法冲突;re.IGNORECASE让匹配不区分大小写,适配更多情况。


需求2:完善JIRA JSON提取无子任务工单描述的代码

我帮你补全并优化了代码,处理了各种边界情况(比如工单可能没有description字段),同时保留了对Python2的兼容。完整代码如下:

#!/usr/bin/python
import sys
import json

# Python2 编码兼容处理
if sys.version[0] == '2':
    reload(sys)
    sys.setdefaultencoding("utf-8")

# 检查是否传入了JSON文件路径参数
if len(sys.argv) < 2:
    print("请传入JIRA导出的JSON文件路径作为参数!")
    sys.exit(1)

datapath = sys.argv[1]
try:
    # 用utf-8编码加载JSON文件,避免中文乱码
    with open(datapath, 'r', encoding='utf-8') as f:
        data = json.load(f)
except Exception as e:
    print(f"加载JSON文件失败:{str(e)}")
    sys.exit(1)

# 打开输出文件,确保utf-8编码写入
with open('output.txt', 'wt', encoding='utf-8') as output_file:
    # 遍历所有工单,用get()避免KeyError
    for issue in data.get('issues', []):
        fields = issue.get('fields', {})
        # 判断是否没有子任务
        subtasks = fields.get('subtasks', [])
        if len(subtasks) == 0:
            # 获取工单描述,处理描述为空的情况
            description = fields.get('description', '')
            issue_key = issue.get('key', '未知工单')
            if description.strip():
                # 写入工单key和描述,方便对应
                output_file.write(f"工单{issue_key}描述:\n{description}\n\n")
            else:
                # 可选:记录没有有效描述的工单
                output_file.write(f"工单{issue_key}无有效描述\n\n")

print("处理完成,结果已保存到output.txt")

代码优化点说明:

  • 增加了参数检查和文件加载异常处理,避免程序莫名崩溃
  • 用get()方法访问字典键,防止某些工单缺少subtasks或description字段导致报错
  • 用with语句管理文件,自动关闭文件句柄,更安全可靠
  • 写入文件时指定utf-8编码,彻底避免中文乱码问题
  • 增加了工单key标识,方便你对应到具体的JIRA工单
  • 处理了描述为空的情况,可选记录这类工单

运行时只需要在命令行输入:python your_script.py path/to/your/jira_export.json 就能生成结果文件啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:54:19