![](/img/trans.png)
[英]How can I get the 10th item of the <li> elements in an <ul> with Selenium using Python?
[英]Using 'max' and 'len' to properly format the 10th item of a list
for i, items in enumerate(zip(member_names, scores)):
if i < 10:
if i == 9:
msg += "{:<1}. {:<{names_len}} <{:,}>\n".format(i + 1, *items, names_len=len(max(member_names, key=len)) - 1)
continue
msg += "{:<1}. {:<{names_len}} <{:,}>\n".format(i + 1, *items, names_len=len(max(member_names, key=len)))
這是一個示例輸出:
1. xxxx#1598 <12,704>
2. xxxxxxxxxxxx#2390 <7,151>
3. xxxxx#4966 <5,859>
4. xxxx#3562 <3,051>
5. xxxxxxx#6967 <2,831>
6. xxxxx#4643 <2,073>
7. xxxxx#2006 <1,833>
8. xxxx#4720 <1,679>
9. xxxx#8049 <1,651>
10. xxxxxxxxxxxx#8514 <1,614>
member_names
是一個包含幾十個項目的列表。 我的兩個問題:
names_len
不會將縮進擴展一個額外的字符。有人能幫忙嗎? 我是個新手,已經被這個問題難住了很長一段時間。
我會試着把整件事整理一下。 讓我們提前找出最大長度(而不是每個循環確定一次); 與最大索引號相同:
num_items = len(str(len(member_names)))
max_length = len(max(member_names, key=len))
for i, items in enumerate(zip(member_names, scores)):
msg += "{:>{n}}. {:<{m}} <{:,}>\n".format(i + 1, n=num_items, *items, m=max_length)
(我希望這可以正常工作 - 無法訪問您的數據就無法對其進行測試)
您可以通過將它們右對齊來簡單地識別較低的數字:
member_names = [f"name_{i}" for i in range(14)]
scores = [3**i for i in range(14)]
maxlen = len(max(member_names, key=len)) # calculate only once
msg = ""
for i, items in enumerate(zip(member_names, scores)):
msg += "{:>2}. {:<{ml}} <{:,}>\n".format(i + 1, *items,ml=maxlen)
print(msg)
輸出:
1. name_0 <1>
2. name_1 <3>
3. name_2 <9>
4. name_3 <27>
5. name_4 <81>
6. name_5 <243>
7. name_6 <729>
8. name_7 <2,187>
9. name_8 <6,561>
10. name_9 <19,683>
11. name_10 <59,049>
12. name_11 <177,147>
13. name_12 <531,441>
14. name_13 <1,594,323>
請參閱Tim Pietzckers 的答案以獲取更靈活的方法,該方法將允許 > 99 的高分並且仍然保持一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.