从列表中的列中提取某些单词

2024-09-27 09:37:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字段,其中一列是消息,有一个字符串,数据如下:-

df['message']

2020-09-23T22:38:34-04:00 mpp-xyz-010101-10-103.vvv0x.net patchpanel[1329]: RTP:a=end pp=10.10.10.10:9999 user=sip:.F02cf9f54b89a48e79772598007efc8c5.@user.com;tag=2021005845 lport=12270 raddr=11.00.111.212 rport=3004 d=5 arx=0.000 tx=0.000 fo=0.000 txf=0.000 bi=11004 bo=453 pi=122 pl=0 ps=0 rtt="" font=0 ua=funny-SDK-4.11.2.34441.fdc6567fW jc=10 no-rtp=0 cid=2164444 relog=0 vxdi=0 vxdo=0 vxdr=0\n

所以我想从数据中提取raddr,并将其连接回df。 我使用下面的代码进行操作,并认为拆分后其位于位置7:-

df[['raddr']]=df['message'].str.split(' ', 100, expand=True)[[7]]
df['raddr']=df['raddr'].str[6:]

问题出现在一些专栏中,它出现在8点,一些出现在7点,所以在一些专栏中,它给了我一个报告,而不是雷达,因为这个问题

我如何提取它,以便它在字符串搜索中提取它,而不使用拆分

注意:-此外,我希望有一个更快的方法,因为我正在做的猎人数以千计的记录每分钟


Tags: 数据字符串消息messagedfnetstrxyz
2条回答
>>> import re
>>> s = '2020-09-23T22:38:34-04:00 mpp-xyz-010101-10-103.vvv0x.net patchpanel[1329]: RTP:a=end pp=10.10.10.10:9999 user=sip:.F02cf9f54b89a48e79772598007efc8c5.@user.com;tag=2021005845 lport=12270 raddr=11.00.111.212 rport=3004 d=5 arx=0.000 tx=0.000 fo=0.000 txf=0.000 bi=11004 bo=453 pi=122 pl=0 ps=0 rtt="" font=0 ua=funny-SDK-4.11.2.34441.fdc6567fW jc=10 no-rtp=0 cid=2164444 relog=0 vxdi=0 vxdo=0 vxdr=0\n'
>>> re.search('raddr=.*?\s',s).group()
'raddr=11.00.111.212 '

您可以使用series.str.extract

df['raddr'] = df['message'].str.extract(r'raddr=([\d\.]*)') # not tested

该模式只有一个值在等号之后的捕获组。它将捕获任何数字和句点的组合,直到找到其他内容(空格、字母、符号或行尾)

相关问题 更多 >

    热门问题