首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单词列表的regex筛选器,直到字符第9次出现

单词列表的regex筛选器,直到字符第9次出现
EN

Stack Overflow用户
提问于 2020-06-17 07:45:21
回答 1查看 58关注 0票数 0

我有一个带有urls的Dataframe我有一张黑名单,上面有过滤这些urls的单词。不,我想过滤这些网址,直到第三次出现/。例如:

http://example.com/abc/def/

在这里,我只想过滤直到第三次出现/

所以说:http://example.com/

我读了一些类似的问题,我想我需要结合两个规则。

  1. /.*?/(.*?)/这应该完成过滤的工作直到第三次出现/
  2. to过滤我使用这个表达式的单词列表:

代码语言:javascript
复制
mask = df["url"].str.contains(r'\b(?:{})\b'.format('|'.join(blacklist)))
df_new = df[~mask]

现在我不知道如何组合这两个表达式。我是Python的新手,尤其是regex,所以也可能有一种更聪明的方法来完成这个任务。

谢谢。

编辑:黑名单如下:["ebay","shop","camping","car"]

Df是这样的:

代码语言:javascript
复制
url                             text
http://example.com/abc/def/     fdogjdfgfd
http://abcde.com/yzt/egd/        oijfgfdgdf
http://ebay.com/buy/something    fgfgeg
EN

回答 1

Stack Overflow用户

发布于 2020-06-17 08:00:32

使用具有给定regex模式的Series.str.contains

代码语言:javascript
复制
pattern = '|'.join(rf'(?://[^/]*?{b}[^/]+)' for b in blacklist)
m = df['url'].str.contains(pattern, case=False)
df = df[~m]

代码语言:javascript
复制
# print(df)
                           url        text
0  http://example.com/abc/def/  fdogjdfgfd
1    http://abcde.com/yzt/egd/  oijfgfdgdf

您可以测试regex here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62423922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档