1234567891011121314151617181920212223242526272829303132333435363738 |
- import re
- import json
- def git_stats_to_json(text):
- # 正则表达式匹配任意顺序的统计项
- pattern = r",?\s*(\d+)\s*files changed|,?\s*(\d+)\s*insertions\(\+\)|,?\s*(\d+)\s*deletions\(\-\)"
- # 动态提取并合并结果
- data = re.findall(pattern, text)
- # print(data)
- result = {}
- for item in data:
- if item[0]: # 处理files_changed字段
- result["files_changed"] = int(item[0])
- if item[1]: # 处理insertions字段
- result["insertions"] = int(item[1])
- if item[2]: # 处理deletions字段
- result["deletions"] = int(item[2])
- # json_output = json.dumps(result, indent=4)
- # print(json_output)
- # 生成格式化JSON
- return json.dumps(result, indent=4, ensure_ascii=False)
- # 测试不同顺序的输入
- test_cases = [
- " 96 deletions(-), 2539 insertions(+), 11 files changed",
- " 11 files changed, 96 deletions(-)",
- " 2539 insertions(+), 96 deletions(-), 11 files changed"
- ]
- for text in test_cases:
- print(git_stats_to_json(text))
|