Python 基于特定字符串筛选网站

Python 基于特定字符串筛选网站,python,string,pandas,Python,String,Pandas,我目前正在对URL进行分析,希望找到与特定单词匹配的URL。这些URL位于pandas DataFrame列中,我想筛选URL标题中的特定单词 到目前为止我所做的: data['new'] = data['SOURCEURL'].str.extract("(" + "|".join(filter3) +")", expand=False) 这方面的问题是,我应用的过滤器是缩写“ecb”,通常也用于链接的末尾 http://www.ntnews.com.au/news/national/sena

我目前正在对URL进行分析,希望找到与特定单词匹配的URL。这些URL位于pandas DataFrame列中,我想筛选URL标题中的特定单词

到目前为止我所做的:

data['new'] = data['SOURCEURL'].str.extract("(" + "|".join(filter3) +")", expand=False)
这方面的问题是,我应用的过滤器是缩写“ecb”,通常也用于链接的末尾

http://www.ntnews.com.au/news/national/senate-president-stephen-parry-believes-he-is-a-british-citizen/news-story/b2d3a3442544937f85508135401a3f84?nk=f19e52d2acd9588ecb494c03f21fed8c-1509598074
在最后的“/”部分中。我怎样才能过滤出现在文本环境中的“ecb”事件?类似于www.xyz.com/news/national/ecb-press-realease/b2dse332313的内容,它不会在散列或类似的内容中提取ecb的出现。这是一种简单的方法吗


非常感谢

也许您可以将URL拆分为多个单词,然后过滤掉英语词典中没有的所有单词?例如,使用:


一个简单的解决方案是在last/之前只签入字符串:

另一个类似的解决方案:

filter3 = ['ecb']
df['new'] = (df['SOURCEURL'].str.extract('(.*)/', expand=False)
                            .str.extract("(" + "|".join(filter3) +")", expand=False))

这是另一种可能的方法。您可能希望排除在URL末尾传递的参数,我相信这是您看到的唯一一个URL?或=

在这种情况下,您可以将每个拆分字符串部分求值为True/False,并返回求和的布尔值以获得True/False

validation = bool(sum([True if sub in x and "?" not in x and '=' not in x else False for x in url.split('/')]))

我同意,@CalvT븃 - 我已经相应地更新了我的答案。
filter3 = ['ecb']
df['new'] = (df['SOURCEURL'].str.extract('(.*)/', expand=False)
                            .str.extract("(" + "|".join(filter3) +")", expand=False))
print (df)
                                       SOURCEURL  new
0        http://au/news/nat/cit/news-story/b2ecb  NaN
1  http://au/news/nat/cit/news-story/b2d88ecb494  NaN
validation = bool(sum([True if sub in x and "?" not in x and '=' not in x else False for x in url.split('/')]))