COBOL语句转JSON问题:第三个示例语句输出不符预期求修正
修正COBOL MODIFY MAP游标信息提取的Python代码
针对你提到的「MODIFY MAP FOR FIELD NBS-DS-01」语句输出不符合预期的问题,大概率是原有代码的正则匹配逻辑没覆盖这种不带CURSOR关键字的场景,或者字段名的匹配规则不支持带连字符的标识符。以下是修正后的实现:
示例修正代码
import re import json def parse_modify_map(cobol_line): # 匹配MODIFY MAP语句,兼容带/不带CURSOR的情况,支持带连字符的字段名 regex = re.compile( r"MODIFY MAP(?:\s+CURSOR)?\s+FOR FIELD\s+([A-Z0-9-]+)", re.IGNORECASE ) match_result = regex.search(cobol_line) if match_result: field_id = match_result.group(1).strip() # 这里按常见的期望格式生成JSON,可根据你的需求调整字段 return json.dumps({ "operation": "MODIFY_MAP", "target_field": field_id, "cursor_action": "SET_TO_FIELD" }, indent=2) else: return json.dumps({"status": "error", "message": "Unrecognized MODIFY MAP statement"}, indent=2) # 测试目标语句 sample_stmt = "MODIFY MAP FOR FIELD NBS-DS-01" print(parse_modify_map(sample_stmt))
输出结果(符合预期的格式示例)
{ "operation": "MODIFY_MAP", "target_field": "NBS-DS-01", "cursor_action": "SET_TO_FIELD" }
关键修正点
- 正则表达式加入
(?:\s+CURSOR)?可选分组,兼容MODIFY MAP CURSOR FOR FIELD...和MODIFY MAP FOR FIELD...两种写法 - 字段名匹配规则
[A-Z0-9-]+支持带连字符的COBOL字段标识符 - 输出JSON结构可根据你的实际需求调整字段名称和值
如果你的期望JSON格式不同,或者原有代码有其他特殊逻辑(比如处理多个字段、游标位置参数等),可以贴出原有代码和期望的输出格式,再做针对性调整。
内容的提问来源于stack exchange,提问作者Beula Angeline
相关产品推荐
相关产品推荐

