我有一个带有urls的Dataframe我有一张黑名单,上面有过滤这些urls的单词。不,我想过滤这些网址,直到第三次出现/。例如:
http://example.com/abc/def/
在这里,我只想过滤直到第三次出现/。
所以说:http://example.com/
我读了一些类似的问题,我想我需要结合两个规则。
/.*?/(.*?)/这应该完成过滤的工作直到第三次出现/mask = df["url"].str.contains(r'\b(?:{})\b'.format('|'.join(blacklist)))
df_new = df[~mask]现在我不知道如何组合这两个表达式。我是Python的新手,尤其是regex,所以也可能有一种更聪明的方法来完成这个任务。
谢谢。
编辑:黑名单如下:["ebay","shop","camping","car"]
Df是这样的:
url text
http://example.com/abc/def/ fdogjdfgfd
http://abcde.com/yzt/egd/ oijfgfdgdf
http://ebay.com/buy/something fgfgeg发布于 2020-06-17 08:00:32
使用具有给定regex模式的Series.str.contains:
pattern = '|'.join(rf'(?://[^/]*?{b}[^/]+)' for b in blacklist)
m = df['url'].str.contains(pattern, case=False)
df = df[~m]# print(df)
url text
0 http://example.com/abc/def/ fdogjdfgfd
1 http://abcde.com/yzt/egd/ oijfgfdgdf您可以测试regex here。
https://stackoverflow.com/questions/62423922
复制相似问题