URL ENCODING - urllib.parse functions
Python
#!/usr/bin/env python3
"""
URL ENCODING - urllib.parse functions
Demonstrates URL encoding and decoding
"""
import urllib.parse
print("=" * 60)
print("URL ENCODING - urllib.parse")
print("=" * 60)
# Example 1: urlencode() for query parameters
print("\n1. urlencode() - Encode Query Parameters")
print("-" * 40)
params = {'name': 'John Doe', 'age': 30, 'city': 'New York'}
encoded = urllib.parse.urlencode(params)
print(f" Original: {params}")
print(f" Encoded: {encoded}")
# Example 2: quote() for individual values
print("\n2. quote() - Encode Individual String")
print("-" * 40)
text = "Hello World! @#$%"
quoted = urllib.parse.quote(text)
print(f" Original: {text}")
print(f" Quoted: {quoted}")
# Example 3: quote_plus() for form data
print("\n3. quote_plus() - Space as Plus")
print("-" * 40)
search_term = "python urllib tutorial"
quoted_plus = urllib.parse.quote_plus(search_term)
print(f" Original: {search_term}")
print(f" quote_plus: {quoted_plus}")
print(f" quote: {urllib.parse.quote(search_term)}")
# Example 4: unquote() to decode
print("\n4. unquote() - Decode URL")
print("-" * 40)
encoded_url = "Hello%20World%21%20%40%23%24%25"
decoded = urllib.parse.unquote(encoded_url)
print(f" Encoded: {encoded_url}")
print(f" Decoded: {decoded}")
# Example 5: Build query string
print("\n5. Build Complete Query String")
print("-" * 40)
base_url = "http://example.com/search"
params = {'q': 'python programming', 'page': 1, 'sort': 'date'}
query_string = urllib.parse.urlencode(params)
full_url = f"{base_url}?{query_string}"
print(f" Base: {base_url}")
print(f" Params: {params}")
print(f" Full URL: {full_url}")
# Example 6: urlencode with lists
print("\n6. urlencode() with Multiple Values")
print("-" * 40)
params = [('tag', 'python'), ('tag', 'urllib'), ('tag', 'tutorial')]
encoded = urllib.parse.urlencode(params)
print(f" Params: {params}")
print(f" Encoded: {encoded}")
# Example 7: Safe characters
print("\n7. quote() with Safe Characters")
print("-" * 40)
url_path = "/api/users/john.doe"
quoted_default = urllib.parse.quote(url_path)
quoted_safe_slash = urllib.parse.quote(url_path, safe='/')
print(f" Original: {url_path}")
print(f" Default safe: {quoted_default}")
print(f" Safe='/': {quoted_safe_slash}")
# Example 8: parse_qs() to decode
print("\n8. parse_qs() - Parse Query String")
print("-" * 40)
query = "name=John+Doe&age=30&city=New+York"
parsed = urllib.parse.parse_qs(query)
print(f" Query string: {query}")
print(f" Parsed: {parsed}")
# Example 9: parse_qsl() as list
print("\n9. parse_qsl() - Parse as List")
print("-" * 40)
parsed_list = urllib.parse.parse_qsl(query)
print(f" Query string: {query}")
print(f" As list: {parsed_list}")
# Example 10: Encode special characters
print("\n10. Encode Special Characters")
print("-" * 40)
special = "email=user@example.com&password=p@$$w0rd!"
encoded_special = urllib.parse.urlencode(
urllib.parse.parse_qsl(special)
)
print(f" Original: {special}")
print(f" Encoded: {encoded_special}")
print("\n" + "=" * 60)
print("Key Points:")
print(" - urlencode() for query parameters")
print(" - quote() for URL encoding")
print(" - quote_plus() encodes space as +")
print(" - unquote() to decode")
print(" - parse_qs() to parse query strings")
print("=" * 60)