मैं इस पृष्ठ पर उतरा हूं कि स्ट्रिंग्स को "मान्य" urls के रूप में मान्य करने के लिए एक सामान्य तरीका निकालने की कोशिश कर रहा हूं। मैं यहाँ python3 का उपयोग करके अपना समाधान साझा करता हूँ। कोई अतिरिक्त लाइब्रेरी की आवश्यकता नहीं है।
यदि आप python2 का उपयोग कर रहे हैं तो https://docs.python.org/2/library/urlparse.html देखें ।
यदि आप python3 का उपयोग कर रहे हैं तो मैं https://docs.python.org/3.0/library/urllib.parse.html देखें ।
import urllib
from pprint import pprint
invalid_url = 'dkakasdkjdjakdjadjfalskdjfalk'
valid_url = 'https://stackoverflow.com'
tokens = [urllib.parse.urlparse(url) for url in (invalid_url, valid_url)]
for token in tokens:
pprint(token)
min_attributes = ('scheme', 'netloc') # add attrs to your liking
for token in tokens:
if not all([getattr(token, attr) for attr in min_attributes]):
error = "'{url}' string has no scheme or netloc.".format(url=token.geturl())
print(error)
else:
print("'{url}' is probably a valid url.".format(url=token.geturl()))
ParseResult (स्कीम = '', netloc = '', path = 'dkakasdkjdjdjdjjjjjalsalsddjfalk', params = '', query = '', fragment = "')
ParseResult (योजना = 'https', netloc = 'stackoverflow.com', path = '', params = '', query = '', fragment = '')
'dkakasdkjjjjddjadjfalskdjfalk' स्ट्रिंग की कोई योजना या नेटलोक नहीं है।
' https://stackoverflow.com ' संभवतः एक वैध यूआरएल है।
यहाँ एक और अधिक संक्षिप्त कार्य है:
from urllib.parse import urlparse
min_attributes = ('scheme', 'netloc')
def is_valid(url, qualifying=min_attributes):
tokens = urlparse(url)
return all([getattr(tokens, qualifying_attr)
for qualifying_attr in qualifying])