You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python脚本遍历单词列表生成Leet Code变体?

批量生成单词的Leet变体脚本修改方案

以下是修改后的完整代码,支持批量处理单词列表,同时优化了原脚本的效率和可读性:

import itertools
import csv

def create_leet_map():
    # 将原匹配列表转换为字典,提升字符查找效率
    leet_matches = [
        ['a','@','4','∆','Д','а','а','a','à'],
        ['b','8','b','ḃ','ḅ','ḇ'],
        ['c','<','{','[','(','©'],
        ['d','d','ď','ḋ','ḍ','ḏ','ḑ','ḓ'],
        ['e','3','£','₤','€','е'],
        ['f','7','ƒ','ḟ'],
        ['g','9','[','-','6','ĝ','ğ','ġ','ģ','ǧ','ǵ','ḡ'],
        ['h','4','#','ĥ','ȟ','ḣ','ḥ','ḧ','ḩ','ḫ','ẖ'],
        ['i','1','|','!','ì','í'],
        ['j','√','ĵ','ǰ'],
        ['k','ķ','ǩ','ḱ','ḳ','ḵ','ķ','ǩ','ḱ','ḳ','ḵ'],
        ['l','1','|','ĺ','ļ','ľ','ḷ','ḹ','ḻ','ḽ'],
        ['m','м','ḿ','ṁ','ṃ'],
        ['n','И','и','п','ñ','ń','ņ','ň','ǹ','ṅ','ṇ','ṉ','ṋ'],
        ['o','0','Ø','Θ','о','ө','ò','ó','ô','õ','ö','ō','ŏ','ő','ơ','ǒ','ǫ','ǭ'],
        ['p','р','ṕ','ṗ'],
        ['q','9','(',')','0'],
        ['r','Я','®','ŕ','ŗ','ř','ȑ','ȓ','ṙ','ṛ','ṝ','ṟ'],
        ['s','5','$','§','ś','ŝ','ş','š','ș','ṡ','ṣ','ṥ','ṧ','ṩ'],
        ['t','7','+','т','ţ','ť','ț','ṫ','ṭ','ṯ','ṱ','ẗ'],
        ['u','ù','ú','û','ü','ũ','ū','ŭ','ů','ű','ų','ư','ǔ','ǖ','ǘ'],
        ['v'],
        ['w','Ш','ŵ','ẁ','ẃ','ẅ','ẇ','ẉ','ẘ'],
        ['x','×','%','*','Ж','ẋ','ẍ'],
        ['y','¥','Ч','ү','у','ṽ'],
        ['z','5','ź','ż','ž','ẑ']
    ]
    return {match[0]: match for match in leet_matches}

def generate_leet_variants(word, leet_map):
    # 生成单个单词的所有Leet变体
    char_options = []
    for letter in word.lower():  # 统一转小写,兼容大写输入
        char_options.append(leet_map.get(letter, [letter]))
    return [''.join(variant) for variant in itertools.product(*char_options)]

def batch_generate_leet_variants(word_list):
    leet_map = create_leet_map()
    result = {}
    for word in word_list:
        variants = generate_leet_variants(word, leet_map)
        result[word] = variants
        print(f"已生成单词「{word}」的{len(variants)}个Leet变体")
    return result

def save_variants_to_csv(variant_dict, filename='leet_variants.csv'):
    # 将批量结果写入CSV,每行对应一个变体+原单词
    with open(filename, mode='w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['原单词', 'Leet变体']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for word, variants in variant_dict.items():
            for variant in variants:
                writer.writerow({'原单词': word, 'Leet变体': variant})

# 示例使用
if __name__ == "__main__":
    # 替换为你需要处理的单词列表
    target_words = ["hola", "leet", "python"]
    all_variants = batch_generate_leet_variants(target_words)
    save_variants_to_csv(all_variants)

关键改动说明

  • 效率优化:把原有的二维匹配列表转为字典,避免每次嵌套循环查找字符,处理大列表时速度提升明显
  • 批量支持:新增batch_generate_leet_variants函数,直接接收单词列表,返回每个单词对应的变体集合
  • 兼容大小写:自动将输入单词转为小写,确保大写字符也能匹配到对应变体
  • 鲁棒性提升:遇到不在映射表中的字符时,直接保留原字符,避免报错
  • CSV格式优化:每个变体单独占一行,同时保留原单词标识,方便后续查看对应关系,使用UTF-8编码避免特殊字符乱码
  • 冗余代码移除:删除原脚本中重复输出的无效逻辑,简化代码结构

内容的提问来源于stack exchange,提问作者Nico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:15:44