Python编写一个简化URL的程序
发布时间:2023-12-04 12:10:24
下面是一个python编写的简化URL的程序,程序会将长的URL转换为短的URL,并提供转换后的URL的使用示例。
import string
import random
class URLShortener:
def __init__(self):
self.urls = {}
def shorten_url(self, original_url):
characters = string.ascii_letters + string.digits
short_url = ""
while True:
# 生成6个随机字符作为短URL的一部分
for i in range(6):
short_url += random.choice(characters)
# 检查是否短URL已经存在,如果存在重新生成
if short_url not in self.urls:
break
else:
short_url = ""
self.urls[short_url] = original_url
return short_url
def expand_url(self, short_url):
if short_url in self.urls:
return self.urls[short_url]
else:
return "Short URL does not exist!"
# 创建URLShortener对象
url_shortener = URLShortener()
# 调用shorten_url方法生成短URL
short_url1 = url_shortener.shorten_url("https://www.example.com/page1")
short_url2 = url_shortener.shorten_url("https://www.example.com/page2")
# 打印生成的短URL
print("Short URL for https://www.example.com/page1: ", short_url1)
print("Short URL for https://www.example.com/page2: ", short_url2)
# 调用expand_url方法还原短URL为原始URL
print("Expanded URL for", short_url1, ":", url_shortener.expand_url(short_url1))
print("Expanded URL for", short_url2, ":", url_shortener.expand_url(short_url2))
输出示例:
Short URL for https://www.example.com/page1: Nm48rU Short URL for https://www.example.com/page2: Fdfg7Y Expanded URL for Nm48rU : https://www.example.com/page1 Expanded URL for Fdfg7Y : https://www.example.com/page2
在上面的示例中,我们首先导入需要的模块,然后定义了一个URLShortener类,这个类包含了两个方法,shorten_url和expand_url。
shorten_url方法接收一个原始URL作为输入,并将其转换为短URL。我们首先定义了可能出现在短URL中的字符集合,然后在一个无限循环中生成6个随机字符,如果生成的短URL已经存在,就重新生成。最后将短URL与原始URL的对应关系保存到self.urls字典中,并返回短URL。
expand_url方法接收一个短URL作为输入,并返回原始URL。我们在self.urls字典中查找给定的短URL,如果存在则返回对应的原始URL,否则返回"Short URL does not exist!"。
在主程序中,我们首先创建一个URLShortener对象,然后使用shorten_url方法生成两个短URL并存储起来。最后使用expand_url方法还原短URL为原始URL,并打印输出。
总结:
这个简化URL的程序使用了随机字符生成短URL,通过字典保存原始URL和短URL的对应关系。通过调用shorten_url方法可以生成短URL,并通过调用expand_url方法可以还原短URL为原始URL。
