gittest.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import re
  2. import json
  3. def git_stats_to_json(text):
  4. # 正则表达式匹配任意顺序的统计项
  5. pattern = r",?\s*(\d+)\s*files changed|,?\s*(\d+)\s*insertions\(\+\)|,?\s*(\d+)\s+deletions\(\-\)"
  6. # 动态提取并合并结果
  7. data = re.findall(pattern, text)
  8. # print(data)
  9. result = {}
  10. for item in data:
  11. if item[0]: # 处理files_changed字段
  12. result["files_changed"] = int(item[0])
  13. if item[1]: # 处理insertions字段
  14. result["insertions"] = int(item[1])
  15. if item[2]: # 处理deletions字段
  16. result["deletions"] = int(item[2])
  17. # json_output = json.dumps(result, indent=4)
  18. # print(json_output)
  19. # 生成格式化JSON
  20. return json.dumps(result, indent=4, ensure_ascii=False)
  21. # 测试不同顺序的输入
  22. test_cases = [
  23. " 96 deletions(-), 2539 insertions(+), 11 files changed",
  24. " 11 files changed, 96 deletions(-)",
  25. " 2539 insertions(+), 96 deletions(-), 11 files changed"
  26. ]
  27. for text in test_cases:
  28. print(git_stats_to_json(text))