# 读取数据文件
with open('data', 'r') as file:
lines = file.readlines()
'''在Python的字符串格式化中,使用 {} 作为占位符, {} 内部可以包含变量名或其他表达式。在某些情况下,如果你需要在字符串中直接包含 { 或 },你需要使用双花括号 {{ 和 }} 来表示单个的 { 和 }。这是为了防止字符串格式化引擎将它们解析为占位符。
在你的例子中,template 字符串中包含了 { 和 },这些花括号是C语言代码的一部分,而不是占位符。因此,你需要使用双花括号来确保这些花括号被正确地包含在生成的代码中。
具体来说,template 字符串中的 {{ 和 }} 会被解析为单个的 { 和 },如下所示'''
# 定义生成代码的模板
template1="{flag}=0;{condition}" #这样写就可以
# 生成代码的函数
# def generate_code(lines):
# code_blocks = []
# for line in lines:
# line = line.strip().strip(';')
# if line:
# var, value = line.split(' = ')
# var = var.split('.')[-2] # 获取变量名
# flag = f"IBS_20ms_PDU12{var}_FLAG"
# print("int "+flag+"=1;")
# condition = line
# formatted_code = template.format(condition=condition, flag=flag)
# code_blocks.append(formatted_code)
# return "\n\n".join(code_blocks)
# 执行生成代码的函数并打印结果
check="""
if(1=={flag})
{{
TestStepPass("Result","{flag} SUCCESS");
}}
else
{{
testStepFail("Result","{flag} Fail");
}}
"""
template = """
if({condition})
{{
{flag}=1;
}}
else
{{
{flag}=0;
}}
"""
def generate_code(lines):
code_blocks = []
for line in lines:
line = line.strip().strip(';') # 去除行尾的分号和空白字符
if line:
var, value = line.split(' == ') # 分割条件
var_name = var.split('.')[-2] # 获取变量名(去除前面的路径)
flag = f"PMA_50ms_PDU06{var_name}_FLAG" # 生成标志变量名
condition = line # 使用原始条件
formatted_code = template.format(condition=condition, flag=flag) # 填充模板
code_blocks.append(formatted_code) # 将生成的代码块添加到列表中
return "".join(code_blocks) # 将所有代码块连接成一个字符串
final_code = generate_code(lines)
# print(final_code)
#
#
#
def check_code(lines):
code_blocks = []
for line in lines:
line = line.strip().strip(';') # 去除行尾的分号和空白字符
if line:
var, value = line.split(' == ') # 分割条件
var_name = var.split('.')[-2] # 获取变量名(去除前面的路径)
flag = f"PMA_50ms_PDU06{var_name}_FLAG" # 生成标志变量名
condition = line # 使用原始条件
formatted_code = check.format( flag=flag) # 填充模板
code_blocks.append(formatted_code) # 将生成的代码块添加到列表中
return "".join(code_blocks) # 将所有代码块连接成一个字符串
final_code = check_code(lines)
print(final_code)
template.format 函数用法
于 2025-01-02 09:17:19 首次发布