在此數據中:[‘23 2312 dfr tr 133’, ‘2344 fdeed’, ‘der3212fr342 96’]我想要一個函數,它將返回一行中有一個證書數的數字的值。空格或其他文本無關緊要,只要一行中有一定的數字。(不多不少)例如:2 numbers in a row:[‘23’,’’,’96’]3 numbers in a row:[‘133’,’’,’342’]4 numbers in a row:[‘2312’,’2344’,’3212’]謝謝
1 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
一種方法是使用 re.findall
從字符串中提取連續的數字,并保留那些長度為:n
l = ['23 2312 dfr tr 133',
'2344 fdeed',
'der3212fr342 96']
import re
def length_n_digits(l,n):
return [s for i in l for s in
re.findall(rf'(?<!\d)\d{{{n}}}(?!\d)', i) or ['']]
請注意,雙大括號只是為了轉義內大括號,不會發生插值。 并要環顧四周,并確保僅當數字序列不被其他數字包圍時才匹配。'{{}}'(?<!\d)(?!\d)n
length_n_digits(l, 2)
# ['23', '', '96']
length_n_digits(l, 3)
# ['133', '', '342']
length_n_digits(l, 4)
# ['2312', '2344', '3212']
添加回答
舉報
0/150
提交
取消