使用Python 3.10有一个列,它的值存储在URL字符串中,我希望提取两个反斜杠之间的数值以及结构化列中的行ID。
进行反斜杠的值是有条件的,并且可以是“DomainId”、“DomainainSiteId”等。并且URL还可以在长度和字符方面稍微变化。最后,反斜杠之间的数值长度可能变化5 - 9字节,但总是在斜杠之间。
id url
https://company.db.abcd.com/DomainId/123456789/Otherhttps://company.db.abcd.com/DomainainSiteId/123456/Otherhttps://companyaddedwords.db.abcd.com/DomainId/1234567/Other
在制品df.url.str.extract('\w/(?P.+)\Z’,expand=True)
看起来不知道如何使用终止符来提取数值,Regex想知道findall是否是更好的选择
Expected Output
id DomainId DomainSiteId
1 123456789
2 123456
3 1234567
Current Output
DomainId
DomainId/123456789/Other
DomainSightId/123456/Other
DomainId/1234567/Other
3条答案
按热度按时间vnzz0bqm1#
您可以使用两个命名的捕获组,用
(?P<groupname>...)
表示,并使用|
交替捕获两个变体:Regex demo
输出量
2exbekwf2#
您可以尝试使用
.str.extract
,然后透视数据框:图纸:
初始 Dataframe :
egdjgwm83#
您可以使用以下模式来捕获这两个值。
输出量