这是产生我的输出的最pythonic方法。让我说明一下我要实现的行为。对于我的项目,我正在构建一个函数,该函数采用不同的参数来按列打印输出。其接收列表的示例。
[('Field', 'Integer', 'Hex'),
('Machine;', 332, '0x14c'),
('NumberOfSections;', 9, '0x9'),
('Time Date Stamp;', 4, '0x4'),
('PointerToSymbolTable;', 126976, '0x1f000')
Run Code Online (Sandbox Code Playgroud)
**项的大小可以不同(每个元组现在只有3项,另一个列表可以是4项,也可以是任意数量**)
输出应该是这样的
Field Integer Hex
-------------------------------------------------------------------------------
Machine; 332 0x14c
NumberOfSections; 9 0x9
Time Date Stamp; 4 0x4
PointerToSymbolTable; 126976 0x1f000
Run Code Online (Sandbox Code Playgroud)
出于工作目的,我创建了一个仅包含标头字段的列表:这不是必需的,但使尝试操作变得容易一些
Header field is ['Field', 'Integer', 'Hex']
Run Code Online (Sandbox Code Playgroud)
列表中的第一个元组声明了所谓的“标题字段”,如列表示例所示。在这种情况下,只有3个项目,但是有时会有所不同。所以我尝试用以下方法计算项目的大小:
length_container_header = len(container[0])
Run Code Online (Sandbox Code Playgroud)
此变量可用于正确构建输出。构建标题“ print”我将构建类似的内容。
print("{:21} {:7} {:7}".format(header_field[0], header_field[1], header_field[2]))
Run Code Online (Sandbox Code Playgroud)
现在,这是应该如何使用的手动版本。如您所见,标题字段“ 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])) …Run Code Online (Sandbox Code Playgroud) 是否有可能为循环2列表与另一个大小最小的"重新循环"?
例:
list = [1,2,3,4,5,6,7,8,10]
list2 = [a,b]
newlist = []
for number, letter in zip(list, list2):
newlist.append(item)
newlist.append(item2)
Run Code Online (Sandbox Code Playgroud)
循环停在[1a,2b]因为list2中没有其他项目,list2是否可以重新开始直到list1为空?即:newlist = [1a,2b,3a,4b,5a,6b]等?
thkx!
我正在尝试使用python中的格式创建查询,我无法弄清楚我如何能够为数据转义二进制输入.它返回如下内容:
插入
python.UDP(Packet,Destination,Source,Protocol,Version,Header_Length,TTL,Protoco l_UDP,Target,Source_Port,Destination_Port,Length)VALUES(NULL,'00:0C:29:B2:14:0℃下' '192.168.178.50', '8', '4', '20',' 128','17','192.168.178.24','52371','8888','29227','b'Data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\X00\X00\X00\X00 '');)
如何在python中使用格式化正确地转义二进制字符串值?
def setopUDP(destination, source, protocol, version, header_length, ttl, protocolEGP, target, source_port, destination_port, length, data):
query = ("INSERT INTO `python`.`UDP` (`Packet`, `Destination`, `Source`, `Protocol`, "
"`Version`, `Header_Length`, `TTL`, `Protocol_UDP`, `Target`, `Source_Port`, "
"`Destination_Port`, `Length`) VALUES (NULL, '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', …Run Code Online (Sandbox Code Playgroud)