[英]Strip digits from list in Python, hour format
我得到一個如下所示的列表:(小時)
列表 = ['02:00', '01:00', '03:00', '00:00', '04:00', '05:00', '06:00', '23:00' , '24:00', '07:00', '22:00', '14:00', '13:00', '15:00', '21:00', '08:00', ' 16:00', '12:00', '20:00', '17:00', '11:00', '18:00', '09:00', '10:00']
在我的 function 的末尾,當我整理列表時它看起來像這樣:
list = nsmallest(HoursPerDay, my_dict, key=my_dict.get)
return [i.strip(':0') for i in list]
它給了我這個:list = ['2', '1', '3', '', '4', '5', '6', '23', '24', '7', '22 ', '14', '13', '15', '21', '8', '16', '12', '2', '17', '11', '18', '9', '1']
除了 20:00 變成 2 而不是 20 並使 00:00 變為空之外,每小時都可以正常工作。 我該如何解決這個問題? 我也嘗試過一些正則表達式生成器,但我做對了。
與其剝離,不如分裂。 像這樣:
inlist = ['02:00', '01:00', '03:00', '00:00', '04:00', '05:00', '06:00', '23:00', '24:00', '07:00', '22:00', '14:00', '13:00', '15:00', '21:00', '08:00', '16:00', '12:00', '20:00', '17:00', '11:00', '18:00', '09:00', '10:00']
outlist = [f"{int(e.split(':')[0])}" for e in inlist]
print(outlist)
Output:
['2', '1', '3', '0', '4', '5', '6', '23', '24', '7', '22', '14', '13', '15', '21', '8', '16', '12', '20', '17', '11', '18', '9', '10']
筆記:
轉換為 int 並返回 string 有效地刪除了任何前導零
如果我們使用以下代碼片段,就可以達到您想要的結果。
[(i.removesuffix(':00')).lstrip('0') or '0' for i in list]
lstrip
]另一個使用正則表達式的替代解決方案:
[str(int(re.sub("\:00$", "", i))) for i in list]
re.sub("\:00$", "", i
] python 文檔中給出的strip
默認行為是
返回刪除了前導字符和尾隨字符的字符串副本。 chars 參數是一個字符串,指定要刪除的字符集。 如果省略或無,則 chars 參數默認為刪除空格。 chars 參數不是前綴或后綴; 相反,它的值的所有組合都被剝離。
'00010:010:000'.strip(':0') # it will remove all available combination of ':0'
# you will get '10:01'
現在針對您的具體要求
[i.rstrip('0').rstrip(':') for i in list]
如果要在刪除第一個 0 后從右側保留零,請使用
import re
list = ['02:00', '01:00', '03:00', '00:00', '04:00', '05:00', '06:00', '23:00', '24:00', '07:00', '22:00', '14:00', '13:00', '15:00', '21:00', '08:00', '16:00', '12:00', '20:00', '17:00', '11:00', '18:00', '09:00', '10:00']
[re.sub(r'0+(.+)', r'\1', i.rstrip('0').rstrip(':')) for i in list]
# ['2', '1', '3', '0', '4', '5', '6', '23', '24', '7', '22', '14', '13', '15', '21', '8', '16', '12', '20', '17', '11', '18', '9', '10']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.