为了账号安全,请及时绑定邮箱和手机立即绑定

写入带有缩进的文本文件

写入带有缩进的文本文件

蝴蝶不菲 2022-10-25 15:30:17
我是 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")
查看完整描述

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")


查看完整回答
反对 回复 2022-10-25
?
繁星点点滴滴

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)


查看完整回答
反对 回复 2022-10-25
?
呼唤远方

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{


查看完整回答
反对 回复 2022-10-25
  • 3 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信