簡體   English   中英

從 Python 中的列表中去除數字,小時格式

[英]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]

  1. 刪除:00 后綴。
  2. 刪除前導零。 [ lstrip ]
  3. “00:00”的特例。

另一個使用正則表達式的替代解決方案:

[str(int(re.sub("\:00$", "", i))) for i in list]

  1. 刪除:00 后綴。 [ re.sub("\:00$", "", i ]
  2. 通過轉換為 int 刪除前導零。
  3. 根據需要將每個元素轉換為字符串。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM