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'3qnv2us = {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{
添加回答
舉報