文字列内の数値の固定された行(番号)を返しますか?

オーリー:

このデータには:

[‘23 2312 dfr tr 133’,
 ‘2344 fdeed’,
 ‘der3212fr342 96’]

私は、行の数のcertan数がある値を返す関数をしたいと思います。それは限り、行の特定の番号があるので、スペース、またはその他のテキストについては重要ではありません。(これ以上、劣らず)、例えば:


2 numbers in a row:
[‘23’,’’,’96’]

3 numbers in a row:
[‘133’,’’,’342’]

4 numbers in a row:
[‘2312’,’2344’,’3212’]

ありがとうございました

オリジナル:

一つの方法は、使用することができ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']

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=408540&siteId=1