python格式打印_Python格式打印列表

这是产生输出的最pythonic方式.让我举例说明我正在努力实现的行为.

对于我的项目,我正在构建一个函数,该函数使用不同的参数来打印列中的输出.

它收到的列表示例.

[('Field', 'Integer', 'Hex'),

('Machine;', 332, '0x14c'),

('NumberOfSections;', 9, '0x9'),

('Time Date Stamp;', 4, '0x4'),

('PointerToSymbolTable;', 126976, '0x1f000')

**项目的大小可以不同(现在每个元组只有3个项目,另一个列表可以是4个或任何数字**

输出应该是这样的

Field Integer Hex

-------------------------------------------------------------------------------

Machine; 332 0x14c

NumberOfSections; 9 0x9

Time Date Stamp; 4 0x4

PointerToSymbolTable; 126976 0x1f000

出于工作目的,我创建了一个仅包含标题字段的列表:

这不是必要的,但它使尝试的东西更容易一些

Header field is ['Field', 'Integer', 'Hex']

列表中的第一个元组声明了所谓的“标题字段”,如列表示例所示.

对于这种情况,只有3个项目,但这可能会不时有所不同.所以我尝试用以下方法计算物品的大小:

length_container_header = len(container[0])

此变量可用于正确构建输出.

构建标题“print”我会构建这样的东西.

print("{:21} {:7} {:7}".format(header_field[0], header_field[1], header_field[2]))

现在这是一个关于应该如何的手动版本.正如您所注意到的那样,标题字段“Field”更短

列表中的PointerToSymbolTable.我写了这个函数来确定列表中每个位置的最长项

container_lenght_list = []

local_l = 0

for field in range(0, lenght_container_body):

for item in container[1:]:

if len(str(item[field])) > local_l:

local_l = len(str(item[field]))

else:

continue

container_lenght_list.append(str(local_l))

local_l = 0

在这种情况下,像[21,7,7]一样生成一个列表.

创建格式字符串可以非常简单,

formatstring = ""

for line in lst:

formatstring+= "{:" + str(line) +"}"

哪个产生字符串:

{:21}{:7}{:7}

这部分是遇到麻烦的,我怎样才能生成格式字符串的最后一部分?

我在format()函数中尝试了一个嵌套的for循环,但我最终得到了各种错误.我认为可以用一个

对于循环,我只是无法弄清楚如何.如果有人能让我朝着正确的方向推进我的标题打印,我将非常感激.一旦我弄清楚如何打印标题,我几乎可以弄清楚其余部分.我希望我解释得很好

亲切的问候,

解决方法:

container = [

('Field', 'Integer', 'Hex'),

('Machine;', 332, '0x14c'),

('NumberOfSections;', 9, '0x9'),

('Time Date Stamp;', 4, '0x4'),

('PointerToSymbolTable;', 126976, '0x1f000')

]

lengths = [

max(len(str(row[i])) for row in container) for i in range(len(container[0]))

] # => [21, 7, 7]

# OR lengths = [max(map(len, map(str, x))) for x in zip(*container)]

fmt = ' '.join('{:

# => '{:<21} {:<7} {:<7}' # < for left-align

print(fmt.format(*container[0])) # header

print('-' * (sum(lengths) + len(lengths) - 1)) # separator

for row in container[1:]:

print(fmt.format(*row)) #

# similar to print(fmt.format(row[0], row[1], row[2])

输出:

Field Integer Hex

-------------------------------------

Machine; 332 0x14c

NumberOfSections; 9 0x9

Time Date Stamp; 4 0x4

PointerToSymbolTable; 126976 0x1f000

标签:python,format,string,list

使用Python的brother_ql库可以轻松实现对Brother QL系列打印机的控制,包括打印标签、切割标签等。具体步骤如下: 1. 安装brother_ql库 可以使用pip命令来安装brother_ql库,命令如下: ``` pip install brother_ql ``` 2. 创建Brother QL打印机对象 使用brother_ql库的create_printer函数来创建Brother QL打印机对象。需要指定打印机的型号和连接方式(USB或网络),示例代码如下: ```python from brother_ql import BrotherQLRaster from brother_ql.backends import backend_factory # 创建打印机对象 printer_model = "QL-700" printer_connection = "usb://0x04f9:0x2042" backend = backend_factory(prn_type=printer_model, connection_string=printer_connection) printer = BrotherQLRaster(backend) ``` 3. 打印标签 通过BrotherQLRaster对象的print_label函数来打印标签。需要指定标签的大小、内容和打印方向,示例代码如下: ```python from brother_ql.conversion import convert from brother_ql.backends.helpers import send # 打印标签 label_size = "62mm" label_content = "This is a test label." label_direction = "rotate" # 将标签内容转换为打印数据 label_data = convert(label_content, label_size, label_direction) # 发送打印数据到打印机 send(printer_model, printer_connection, label_data) ``` 以上代码会将一条测试标签打印到Brother QL打印机上。需要注意的是,具体的标签大小、内容和打印方向需要按照Brother QL打印机的标签格式进行编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值