如何更新修改域名数组列表:移除协议前缀并替换特定URL
问题描述
我有一组域名列表,示例如下:
exist = ['http://sushiblast.com', 'http://funnyvideos-funny.info', 'https://youtube.com','https://api.forms.app/user/infobyname/minecraft']
之前试过用下面的Python代码移除HTTPS前缀,但代码只针对单个字符串有效,放到数组上就失效了:
input_str = exist # Printing original string print ("Original string: " + input_str) result_str = "" for i in range(5, len(input_str)): if i != 1: result_str = result_str + input_str[i] # Printing string after removal print ("String after removal of i'th character : " + result_str)
现在需要实现两个需求:
- 移除数组里所有URL的
http://和https://前缀 - 把特定URL
https://api.forms.app/user/infobyname/minecraft修改为my.forms.apps/minecraft
解决方案
直接遍历数组里的每个URL,逐个处理就能解决问题,下面是两种实现方式:
方式一:普通循环处理
exist = ['http://sushiblast.com', 'http://funnyvideos-funny.info', 'https://youtube.com','https://api.forms.app/user/infobyname/minecraft'] processed_urls = [] for url in exist: # 先处理特殊URL的替换 if url == 'https://api.forms.app/user/infobyname/minecraft': processed_urls.append('my.forms.apps/minecraft') continue # 移除http或https前缀 if url.startswith('https://'): processed_urls.append(url[8:]) # 从第8个字符开始截取,跳过https:// elif url.startswith('http://'): processed_urls.append(url[7:]) # 从第7个字符开始截取,跳过http:// else: # 没有前缀的URL直接保留 processed_urls.append(url) # 输出处理后的结果 print(processed_urls)
运行后输出:
['sushiblast.com', 'funnyvideos-funny.info', 'youtube.com', 'my.forms.apps/minecraft']
方式二:列表推导式简化代码
如果想让代码更简洁,可以用列表推导式一行搞定:
exist = ['http://sushiblast.com', 'http://funnyvideos-funny.info', 'https://youtube.com','https://api.forms.app/user/infobyname/minecraft'] processed_urls = [ 'my.forms.apps/minecraft' if url == 'https://api.forms.app/user/infobyname/minecraft' else url[8:] if url.startswith('https://') else url[7:] if url.startswith('http://') else url for url in exist ] print(processed_urls)
核心思路
- 遍历原数组,对每个URL单独判断处理
- 优先处理特殊URL的替换,避免和前缀移除逻辑冲突
- 用
startswith()判断URL前缀类型,通过字符串切片移除前缀
内容的提问来源于stack exchange,提问作者user19027283
相关产品推荐
相关产品推荐

