删除URL字符串并在python中使用正则表达式仅保留域

时间:2019-09-04 10:06:10

标签: python-3.x

我想使用RegEx删除域中的URL。以下是示例网址。但是,当我想在下面的第三个示例中删除URL时。它不起作用。

http://www.domain.com.org
https://www.domain.com.org
http://domain.com.org

如果URL为http://www.domain.com.org,则我的第一个IF条件可以正常工作。我使用split()以点分隔整个URL。 但是,如果我的网址没有www(http://domain.com.org),则该网址无效。在我的FOR循环中,如果它们匹配,我会将x的当前值与regex2结果进行比较,我将通过创建另一个正则表达式来删除URL并离开域并将其添加到我的var(word)<中,将remove()删除。 / p>

我知道还有其他方法可以执行此操作,但是根据我对python和regex的熟练程度,这就是我的处理方法。我的代码真的可行吗,或者我正在做一件不可能的事情,我的代码需要重做?

我是Python的新手,几天前我刚刚学习了RegEx。但是根据测试,我知道我的正则表达式很好。我相信我的代码流确实搞砸了。有想法的人吗?

import re
def domain_name2(url):

word = url.split('.')
print(word)

#regex1 = '\w+\W+www.'
regex2 = '\w+\W+\w+'
result2 = re.search(regex2, url).group()
print(result2)

for x in word:

    #if x in re.search(regex1, url).group():
    #    word.remove(x)
    if x in result2: 
        word.remove(re.search('\w+\W+',x).group())
return word


['http://domain', 'com', 'org']
http://domain
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-324-e34a89862aeb> in <module>
----> 1 domain_name2('http://domain.com.org')

<ipython-input-319-877bb80b77f0> in domain_name2(url)
 18         #    word.remove(x)
 19         if x in result2:
 ---> 20             word.remove(re.search('\w+\W+',x).group())
 21     return word
 22 

 ValueError: list.remove(x): x not in list

2 个答案:

答案 0 :(得分:0)

我不确定您到底想要什么,但是您可以解析URL以获得所谓的netloc部分。

from urlparse import urlparse
result = urlparse(url).netloc

答案 1 :(得分:0)

您也可以将regex用于if语句。

import re 

string = "https://domain.com.org"

def url_slice(string):
    if 'www' in string:
        res = re.search('(?<=\.).+', string)
    else:
        res = re.search('(?<=\/\/).+', string)
    return res.group()

print(url_slice(string)) #domain.com.org