3 回答
TA贡献1784条经验 获得超8个赞
我是 Python 新手,正在尝试编写一个 Python 代码,该代码将从 excel 文件中提取一些数据并使用提取的数据创建一个文本文件(用作 C 语言头文件)。我能够解析 excel 并提取相关数据,但我需要一些指导才能将这些数据以所需格式写入文本文件。
从 Excel 中提取的数据看起来像这样
parameter_name = "Colour"
parameter_value = ["0x01","0x02","0x06","0x10"]
parameter_value_desc = ["Black","White","Red","Indigo"]
提取的数据将以这种格式写入文本文件(创建枚举声明)
typedef enum Colour{Black = 0x01,
White = 0x02,
Red = 0x06,
Indigo = 0x10};
如何写入文本文件以使枚举的每个元素出现在另一个元素的下方,如上所示?
我只能写入文件,以便枚举元素并排放置,如下所示。
typedef enum Colour{Black = 0x01, White = 0x02, Red = 0x06, Indigo = 0x10};
但这是一个问题,当我们有更多的枚举元素时,文本将超过每行 80 个字符的限制。
这就是我的代码的外观
def write_to_file(parameter_value, parameter_value_desc, parameter_name):
with open("out_file.h", "a") as f:
print("typedef enum {}".format(parameter_name) + "{", file=f, end="")
for value, desc in zip(parameter_value, parameter_value_desc):
print("{} = 0x{}".format(str(desc), str(value)), file=f, end=",")
print("};", file=f, end="\n")
TA贡献1803条经验 获得超3个赞
这是Daweo 答案的一个变体,主要是试图让-blockwith
不那么忙:
start = f'typedef enum {parameter_name}{{'
sep = ',\n' + ' '*len(start)
values = (f'{d} = {v}' for v, d in zip(parameter_value, parameter_value_desc))
with open("out_file.h", "a") as f:
print(f'{start}{sep.join(values_fmtd)}}};', file=f)
TA贡献1856条经验 获得超11个赞
伪代码:
for (i, value) in enumerate(values):
if i==0:
out = first_line
else:
out = " " * len(first_line)
out += value
if i == len(values) - 1:
out += last_line
else:
out += ",\n"
print(out)
first_line在哪里typedef enum Colour{
添加回答
举报