提取【 】中的不同长度的数字?
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
如何更改我的代码的参数来提取【】内不同长度的数字? 我有一个 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