亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

列表中項目的 Python 正則表達式

列表中項目的 Python 正則表達式

MM們 2023-01-04 14:17:22
我有一個列表cols如下:['Wed Estimate 6/10', 'Thu Estimate 6/11', 'Fri Estimate 6/12', 'Next Estimate 6/15-6/19']當我嘗試以下操作時:re.findall(r'\s\d/\d\w-\d/\d\w', cols[3])我明白[' 6/15-6/19']了,但是當我嘗試時[re.findall(r'\s\d/\d\w|\s\d/\d\w-\d/\d\w', x) for x in cols]我得到[[' 6/10'], [' 6/11'], [' 6/12'], [' 6/15']]我想實現以下目標:[[' 6/10'], [' 6/11'], [' 6/12'], [' 6/15-6/19']]我不確定為什么正則表達式的行為如上所述。
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

您可以嘗試以下操作嗎:


import re

lst = ['Wed Estimate 6/10', 'Thu Estimate 6/11', 'Fri Estimate 6/12', 'Next Estimate 6/15-6/19']

lst_new = [re.findall(r'\d+\/\d+(?:-\d+\/\d+)?', x) for x in lst]

print(lst_new)

退貨:


[['6/10'], ['6/11'], ['6/12'], ['6/15-6/19']]

該模式并不太難,但我沒有使用交替,而是使用了一個可選的非捕獲組來用于##/##-##/##模式。我相信這會更快地產生結果。


以上將排除前導空格。不確定這是否是特定要求。此外,如果您想將##/##模式中的數字數量限制為最多兩個,則可以\d{1,2}\/\d{1,2}(?:-\d{1,2}\/\d{1,2})?改用。


另一個注意事項;如果字符串不會比此示例數據更復雜,您也可以拆分字符串。例如:


lst_new = [[x.rpartition(' ')[2]] for x in lst]

要么:


lst_new = [[x.rsplit(' ', 1)[1]] for x in lst]


查看完整回答
反對 回復 2023-01-04
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號