提取【 】中的不同长度的数字?

Extract numbers enclosed in【 】which are of different length?

如何更改我的代码的参数来提取【】内不同长度的数字? 我有一个 df 以这种格式存储数字【123】。但是,df["News"] 中的数字长度不同,如下所示:

df["News"] :

【123】text text , 
【1234】text text text , 
【1】text text text... 

我的代码:

df['num'] = df['News'].str.extract('(\d{4})')

期望的输出:

123
1234
1

使用:.str.extract('(【\d+】)')

例如:

df = pd.DataFrame({"News":['【123】text text 123', '【1234】text text text 2344, kkk', '【1】text text text 09ekk']})
df['num'] = df['News'].str.extract('(【\d+】)')
#or
df['num_1'] = df['News'].str.extract('【(\d+)】')
print(df)

输出:

                             News     num num_1
0              【123】text text 123   【123】   123
1  【1234】text text text 2344, kkk  【1234】  1234
2         【1】text text text 09ekk     【1】     1

演示:

import re
s = '''【123】text text , 
【1234】text text text , 
【1】text text text... ,
【abc】text text text 456 text'''

reg = '【(\w+)】'

for i in s.split('\n'):
    r = re.search(reg, i)
#     print(i, r)
    if r:
        print(r.group(1))

输出

123
1234
1
abc