如何优化域名生成器,实现.、-、_多种分隔符的灵活组合输出?
域名生成器分隔符灵活组合优化方案
需求说明
当前域名生成代码仅用.分隔所有部分,输出格式单一(如login.download.web.co.id),需要实现.、-、_三种分隔符的随机灵活组合,同时避免重复代码,支持生成类似login-download.web.co.id、login.download-web.co.id的多样格式。
实现方案
通过定义分隔符选项池,对需要可变分隔的部分(随机选取的子域名 + web标识),逐个随机选择分隔符进行拼接,最后固定拼接后缀suffix即可。
修改后的完整代码
import random web = 'web' suffix = 'co.id' output_count = 50 subdomain_count = 2 # 定义所有可用的分隔符选项 separators = ['.', '-', '_'] def join_with_random_separators(parts): """将传入的字符串列表用随机分隔符连接""" if not parts: return "" result = parts[0] for part in parts[1:]: # 每次随机选一个分隔符 result += random.choice(separators) + part return result # 假设Test是已预先定义的子域名候选列表 with open("Combined.txt", "w") as Example: for _ in range(output_count): # 随机选取指定数量的子域名 selected_subdomains = [random.choice(Test) for _ in range(subdomain_count)] # 组合需要随机分隔的部分:子域名 + web标识 variable_components = selected_subdomains + [web] # 用随机分隔符连接可变部分 combined_variable = join_with_random_separators(variable_components) # 拼接后缀得到完整域名 full_domain = f"{combined_variable}.{suffix}" Example.write(full_domain + "\n") with open("dictionaries/examples.txt") as f: websamples = [line.rstrip() for line in f]
代码说明
- 分隔符池:
separators变量列出所有允许使用的分隔符,后续可直接修改该列表调整可选分隔符。 - 随机拼接函数:
join_with_random_separators函数负责对传入的字符串列表,逐个随机选择分隔符连接,实现相邻元素间的分隔符多样化。 - 核心逻辑:每次循环中,先随机选子域名,再和
web合并成可变部分,用随机分隔符连接后,最后固定拼接后缀suffix,生成完整域名写入文件。
特殊需求实现(仅替换第一个分隔符为-)
如果需要固定将第一个子域名间的分隔符替换为-,其余用.,可修改可变部分的拼接逻辑:
# 替换原代码中combined_variable的生成逻辑 combined_variable = '-'.join(selected_subdomains) + f".{web}"
这样会生成如login-download.web.co.id的格式。
内容的提问来源于stack exchange,提问作者Tsukuru
相关产品推荐
相关产品推荐

