如何移除JSON输出中的^M字符?并完善JIRA REST API数据提取代码
解决JIRA API数据提取与^M字符清理问题
我帮你整理了完整的解决方案,涵盖调用JIRA REST API获取数据、保存JSON文件、提取指定字段,以及移除恼人的^M(回车符\r)字符的全部步骤,代码可直接运行:
完整代码实现
import requests import json import csv import sys def main(): # 替换为你的JIRA用户名和API令牌/密码(云版JIRA建议用API令牌) jira_username = "your_jira_username" jira_password = "your_api_token_or_password" headers = { 'Content-Type': 'application/json', } params = ( ('jql', 'project="Technology" AND summary~"workspace creation*" AND issuetype="Task" AND status!="DONE"'), # 可调整maxResults获取更多结果,默认返回50条 ('maxResults', '100') ) try: # 发送GET请求到JIRA API response = requests.get( 'https://jira.company.com/rest/api/2/search', headers=headers, params=params, auth=(jira_username, jira_password) ) response.raise_for_status() # 检查请求是否成功 # 清理^M字符(即Windows回车符\r) cleaned_response_text = response.text.replace('\r', '') # 保存清理后的JSON到本地文件 with open('1.json', 'w', encoding='utf-8') as f: f.write(cleaned_response_text) print("✅ JSON文件已保存为1.json,且已移除所有^M字符") # 从JSON文件提取JIRA密钥(key)和描述(description) with open('1.json', 'r', encoding='utf-8') as f: jira_data = json.load(f) extracted_issues = [] for issue in jira_data.get('issues', []): issue_key = issue.get('key') raw_description = issue.get('fields', {}).get('description', '') # 可选:清理描述中的换行符,让文本更规整 cleaned_description = raw_description.replace('\n', ' ') if raw_description else '' extracted_issues.append({ 'jira_key': issue_key, 'description': cleaned_description }) # 将提取的数据保存为CSV(方便后续查看/处理) with open('extracted_jira_issues.csv', 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ['jira_key', 'description'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() writer.writerows(extracted_issues) print("✅ 已成功提取JIRA密钥和描述,保存为extracted_jira_issues.csv") except requests.exceptions.RequestException as e: print(f"❌ 请求JIRA API时出错: {e}") sys.exit(1) except json.JSONDecodeError as e: print(f"❌ 解析JSON数据时出错: {e}") sys.exit(1) if __name__ == "__main__": main()
关键步骤解释
1. JIRA API认证处理
JIRA的REST API需要基本认证,你需要替换代码中的jira_username和jira_password为你的账号信息:如果是云版JIRA,建议使用官方生成的API令牌代替密码,安全性更高。
2. 移除^M字符的原理
^M其实是ASCII中的回车符\r,通常是Windows系统下的换行格式残留。我们直接在API响应文本中用replace('\r', '')批量移除,确保生成的JSON文件没有异常字符,避免后续解析报错。
3. 字段提取逻辑
JIRA返回的JSON结构中:
- JIRA密钥直接对应
issue['key'] - 描述字段在
issue['fields']['description'],代码中做了空值处理,避免因某个issue无描述而抛出异常;同时可选清理换行符,让输出更规整。
4. 异常处理
添加了请求异常和JSON解析异常的捕获,遇到问题时会清晰提示错误原因,让代码更健壮。
额外提示
- 如果返回的issue数量超过
maxResults设置的数值,可以添加startAt参数实现分页获取所有结果 - 如果描述字段包含HTML格式(JIRA富文本编辑),可以用正则表达式
re.sub('<.*?>', '', raw_description)进一步提取纯文本
内容的提问来源于stack exchange,提问作者Milister
相关产品推荐
相关产品推荐

