在 Python 中删除 URL
Strip URL in Python
我对 python 很陌生。我正在尝试解析 URLs 的文件以仅保留 URL.
的特定部分(粗体部分)
以下是我正在使用的 URL 的一些示例:
http://www.mega.pk/**washingmachine**-dawlance/
http://www.mega.pk/**washingmachine**-haier/
http://www.mega.pk/**airconditioners**-acson/
http://www.mega.pk/**airconditioners**-lg/
http://www.mega.pk/**airconditioners**-samsung/
我尝试了一些正则表达式,但它变得非常复杂。我的想法是从所有网址中删除这个“http://www.mega.pk/”,因为它很常见,然后删除“-”之后的所有内容,包括所有斜杠。但是不知道怎么办。
使用re.sub
re.sub(r'^.*\/([^/]*)-.*', r'', line)
示例:
>>> s = '''http://www.mega.pk/washingmachine-dawlance/
http://www.mega.pk/washingmachine-haier/'''.splitlines()
>>> for line in s:
print(re.sub(r'^.*\/([^/]*)-.*', r'', line))
washingmachine
washingmachine
>>>
您可以在不使用正则表达式的情况下实现同样的效果。 Avinash 提出的解决方案更清晰,但下面的方法可能更容易理解,尤其是如果你想在某些时候修改它:
s = '''http://www.mega.pk/washingmachine-dawlance/
http://www.mega.pk/washingmachine-haier/'''.splitlines()
for line in s:
cleanedUrl = line.replace('http://www.mega.pk/**','').replace('/','')
urlParameters = cleanedUrl.split('-')
print urlParameters[-1]
或者,如果您愿意,可以使用更紧凑的版本:
s = '''http://www.mega.pk/washingmachine-dawlance/
http://www.mega.pk/washingmachine-haier/'''.splitlines()
for line in s:
print line.replace('http://www.mega.pk/**','').replace('/','').split('-')[-1]
将 re.sub 与 lambda 函数结合使用:
re.sub(r'^http://www.mega.pk/(\w+)-.*', lambda x: x.group(), line)
使用 urllib(以前的 urlparse)模块。它是专门为此目的而构建的。
from urllib.parse import urlparse
url = "http://www.mega.pk/washingmachine-dawlance/"
path = urlparse(url).path # get the path from the URL ("/washingmachine-dawlnace/")
path = path[:path.index("-")] # remove everything after the '-' including itself
path = path[1:] # remove the '/' at the starting of the path (just before 'washing')
path
变量的值为 washingmachine
干杯!
您还可以使用以下正则表达式:
>>> import re
>>> regex = r"(?is)^\s*https?\:\/\/[^\/]+\/(.*?)(?:\-|\/).*"
>>> res = re.sub(regex, r"", PROVIDE_URL)
你会得到想要的结果。
您也可以使用 urljoin 执行此操作:
import urllib.parse
url = "http://www.mega.pk/**washingmachine**-dawlance/"
website = urllib.parse.urljoin(url, '/')
print(website)
我对 python 很陌生。我正在尝试解析 URLs 的文件以仅保留 URL.
的特定部分(粗体部分)以下是我正在使用的 URL 的一些示例:
http://www.mega.pk/**washingmachine**-dawlance/
http://www.mega.pk/**washingmachine**-haier/
http://www.mega.pk/**airconditioners**-acson/
http://www.mega.pk/**airconditioners**-lg/
http://www.mega.pk/**airconditioners**-samsung/
我尝试了一些正则表达式,但它变得非常复杂。我的想法是从所有网址中删除这个“http://www.mega.pk/”,因为它很常见,然后删除“-”之后的所有内容,包括所有斜杠。但是不知道怎么办。
使用re.sub
re.sub(r'^.*\/([^/]*)-.*', r'', line)
示例:
>>> s = '''http://www.mega.pk/washingmachine-dawlance/
http://www.mega.pk/washingmachine-haier/'''.splitlines()
>>> for line in s:
print(re.sub(r'^.*\/([^/]*)-.*', r'', line))
washingmachine
washingmachine
>>>
您可以在不使用正则表达式的情况下实现同样的效果。 Avinash 提出的解决方案更清晰,但下面的方法可能更容易理解,尤其是如果你想在某些时候修改它:
s = '''http://www.mega.pk/washingmachine-dawlance/
http://www.mega.pk/washingmachine-haier/'''.splitlines()
for line in s:
cleanedUrl = line.replace('http://www.mega.pk/**','').replace('/','')
urlParameters = cleanedUrl.split('-')
print urlParameters[-1]
或者,如果您愿意,可以使用更紧凑的版本:
s = '''http://www.mega.pk/washingmachine-dawlance/
http://www.mega.pk/washingmachine-haier/'''.splitlines()
for line in s:
print line.replace('http://www.mega.pk/**','').replace('/','').split('-')[-1]
将 re.sub 与 lambda 函数结合使用:
re.sub(r'^http://www.mega.pk/(\w+)-.*', lambda x: x.group(), line)
使用 urllib(以前的 urlparse)模块。它是专门为此目的而构建的。
from urllib.parse import urlparse
url = "http://www.mega.pk/washingmachine-dawlance/"
path = urlparse(url).path # get the path from the URL ("/washingmachine-dawlnace/")
path = path[:path.index("-")] # remove everything after the '-' including itself
path = path[1:] # remove the '/' at the starting of the path (just before 'washing')
path
变量的值为 washingmachine
干杯!
您还可以使用以下正则表达式:
>>> import re
>>> regex = r"(?is)^\s*https?\:\/\/[^\/]+\/(.*?)(?:\-|\/).*"
>>> res = re.sub(regex, r"", PROVIDE_URL)
你会得到想要的结果。
您也可以使用 urljoin 执行此操作:
import urllib.parse
url = "http://www.mega.pk/**washingmachine**-dawlance/"
website = urllib.parse.urljoin(url, '/')
print(website)