通过正则表达式条件从列中过滤熊猫字符串并替换它

时间:2020-10-12 10:49:25

标签: python regex pandas string filter

这里有一个来自熊猫DataFrame的字符串。

https://www.gofundme.com/3hgsuu0,https://twitter.com/dog_rates/status/840632337062862849/photo/1

我要做的是遍历所有行,找到Twitter网址,然后从该列中删除 NOT Twitter网址。 目标是在栏中仅包含Twitter网址,而不是2个或更多网址。

我所做的是

arch_drop_new1.expanded_urls.apply(lambda x:str(x).split(“,”)[0])

它为我提供了,之前的所有字符串,这些字符串出现在包含多个URL的行中。

screenshot

1 个答案:

答案 0 :(得分:0)

您可以.str.extract()的值

rx = r'(https?://twitter\.com/\S*?)(?:,\s*http|$)'
arch_drop_new1['twitter_urls'] = arch_drop_new1['expanded_urls'].str.extract(rx, expand=False)

请参见regex demo

注意extract()将从每一行中提取出该模式的第一个匹配项(此处,由于该模式中只有一个捕获组,因此仅提取组1的值)。

详细信息

  • (https?://twitter\.com/\S*?)-第1组:https://twitter.com/http://twitter.com/,然后是0个或更多的非空白字符,并应尽可能少
  • (?:,\s*http|$)-一个非捕获组,匹配,,0个或多个空格,然后匹配http或字符串结尾。