我必须将 cobal 语句转换为 json
import re
import json
def extract_cursor(cobol_statement):
pattern = r"MODIFY MAP (?: CURSOR|TEMP|FOR|PERM|CURSOR)?(?:CURSOR)?(?: AT)?(?: FIELD)?(?: DFLD)?\s+([\w-]+)(?!\()"
action_regex = re.compile(pattern, re.IGNORECASE)
action_match = action_regex.search(cobol_statement)
if action_match:
cursor_value = action_match.group(1)
if cursor_value.upper() != "FIELD" and cursor_value.upper() != "DFLD":
result = {
"cursor": cursor_value,
"for": None,
"attributes": None
}
return result
return None
# Example COBOL statements
cobol_statement1 = "MODIFY MAP TEMP CURSOR AT NBS-DS-01"
cobol_statement2 = "MODIFY MAP CURSOR NBS-DS-01"
cobol_statement3 = "MODIFY MAP FOR FIELD NBS-DS-01"
cobol_statement4 = "MODIFY MAP PERM NBS-DS-01"
# Extract cursor from each COBOL statement
cursor_info1 = extract_cursor(cobol_statement1)
cursor_info2 = extract_cursor(cobol_statement2)
cursor_info3 = extract_cursor(cobol_statement3)
cursor_info4 = extract_cursor(cobol_statement4)
# Convert results to JSON format
json_result1 = json.dumps(cursor_info1, indent=4)
json_result2 = json.dumps(cursor_info2, indent=4)
json_result3 = json.dumps(cursor_info3, indent=4)
json_result4 = json.dumps(cursor_info4, indent=4)
print(json_result1)
print(json_result2)
print(json_result3)
print(json_result4)
我的第三条语句有错误的输出,请有人帮助我,我需要这样的输出 { "光标": "NBS-DS-01", “对于”:空, “属性”:空 }
您的正则表达式似乎处理 FOR 后面跟着 FIELD 的情况。这里不需要负向前瞻。
pattern = r"MODIFY MAP (?:TEMP|PERM)?\s*(?:CURSOR)?\s*(?:AT)?\s*(?:FIELD)?\s*(?:DFLD)?\s+([\w-]+)"
要将 Cobol 语句转换为 JSON,提供的 python 代码使用正则表达式提取 Cobol 语句的特定部分,然后使用此信息构建 JSON 对象。例如,它在 Cobol 语句中查找游标名称并忽略某些关键字。如果它成功找到不是“FIELD”或“DFLD”的游标名称,它会形成一个带有“cursor”以及“for”和“attributes”占位符的简单 JSON。这对于解析 Cobol 中的特定数据模式并将其转换为更通用的可读格式(如 JSON)非常有用。请记住,此脚本专门用于某些 Cobol 模式!