gpt4 book ai didi

python - 打印时元素间距均匀

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:59 25 4
gpt4 key购买 nike

我有这段代码:

for t in tables:
print ""
my_table = t
rows = my_table.findAll('tr')
for tr in rows:
cols = tr.findAll('td')
i = 0
for td in cols:
text = str(td.text).strip()
print "{}{}".format(text if text !="" else "IP","|"),
i=i+1
if i == 2:
print ""
i = 0
pass

“tables”是 HTML 格式的表格列表。我正在使用 beautifulsoup 来解析它们。

目前,我得到的输出是:

Interface in| port-channel8.53| 
IP| 172.18.153.126/255.255.255.252|
Router| bob|
Route| route: 192.168.178.0/255.255.128.0 gw 172.18.145.106|
Interface out| Ethernet2/5.103|
IP| 172.18.145.105/255.255.255.252|

我想要得到的是:

Interface in | port-channel8.53                                    | 
IP | 172.18.153.126/255.255.255.252 |
Router | bob |
Route | route: 192.168.178.0/255.255.128.0 gw 172.18.145.106|
Interface out| Ethernet2/5.103 |
IP | 172.18.145.105/255.255.255.252 |
"Placeholder"| another ip in the same td as the one up |
"Placeholder"| another ip in the same td as the one up |

我怎样才能得到这个输出?

编辑:

以下是 1 个表格的制作方法:

<table>
<tr>
<td>Interface in</td>
<td>Vlan800 (bob)</td>
</tr>
<tr>
<td></td>
<td>172.26.128.3/255.255.255.224<br></br></td>
</tr>
<tr>
<td>Router</td>
<td>bob2</td>
</tr>
<tr>
<td>Route</td>
<td>route: 0.0.0.0/0.0.0.0 gw 172.26.144.241</td>
</tr>
<tr>
<td>Interface out</td>
<td>Vlan1145 (bob3)</td>
</tr>
<tr>
<td></td>
<td>172.26.144.245/255.255.255.240<br></br></td>
</tr>
</table>

(是的,空白在真实页面上)

编辑2:有问题的代码:

<td>
195.233.112.4/255.255.255.0<br>
195.233.112.15/255.255.255.0<br>
195.233.112.3/255.255.255.0<br>
<br><br><br></td>

编辑3:

示例代码 2(这对提出的解决方案产生了问题)

<table class="nitrestable">
<tr>
<td>Interface in</td>
<td>GigabitEthernet1/1.103 (*global)</td>
</tr>
<tr>
<td></td>
<td>172.18.145.106/255.255.255.252<br></br></td>
</tr>
<tr>
<td>Router</td>
<td>*grt</td>
</tr>
<tr>
<td>Route</td>
<td>route: 172.18.145.106/255.255.255.128 gw 172.18.145.106</td>
</tr>
<tr>
<td>Interface out</td>
<td>Vlan71 (*global)</td>
</tr>
<tr>
<td></td>
<td>172.18.145.106/255.255.255.0<br>
172.18.146.106/255.255.255.0<br>
172.18.147.106/255.255.255.0<br></br></br></br></td></tr>
</table>

最佳答案

您可以提供 format specifier ,例如

print "{0:14}|".format(text or "IP"),

或者用 str.ljust 填充您要传递到 format 的字符串:

print "{}|".format(str.ljust(text or "IP", 14)),

但是,(正如呆伯特刚刚在评论中指出的那样),您需要做一些事情来计算出每列所需的大小。

请注意,由于空字符串 "" 在 bool 上下文中计算 False,因此您可以简化 if 条件,并且作为pipeline '|' 永远不会改变,您可以直接将其放入模板中。

关于python - 打印时元素间距均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com