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

如何遍历字母表依次运行单词搜索函数并生成各字母独立结果文件

问题描述
  • 已实现功能:编写了可在文本中搜索所有以指定字母开头的5字母单词的函数,处理完成后会将结果列表存入对应文本文件。
  • 待解决需求:当前代码需要手动修改首字母参数、逐次运行程序才能处理不同字母,需要调整代码实现按顺序遍历字母表所有字母自动执行搜索,为每个首字母的搜索结果生成独立的文本文件。

原有代码

import re
from pathlib import Path

# define starting letter of word search
ltr = 'm' 

# define RegEx pattern to find all 5-letter words starting with a certain letter 
pattern = r'\b'+ltr+r'\w{4}\b'

# define Function WordSearch: search wordlist.txt with defined RegEx Pattern
def WordSearch():
    # set Path to Main Text file
    file = r'C:\Users\User1\OneDrive\Documents\wordlist.txt'

    # open Main Text file and set variable 'MainText' equal to contents
    fileToOpen = Path(file)
    f = open(fileToOpen)
    MainText = f.read()

    # search all words in Main Text and make list of those that fit the 
    # RegEx pattern defined above
    slist = re.findall(pattern,MainText)

    # make set from list to eliminate duplicate entries
    slist_nd = list(set(slist))

    # turn Set into a string
    sliststr = ' '.join(slist_nd)

    # open new txt file, write string into contents
    slist_file = open(r"C:\Users\User1\OneDrive\Documents\fivelist"+ltr+".txt", "w")
    slist_file.write(sliststr)

    # close files
    f.close()
    slist_file.close()
WordSearch()
修改方案

核心调整逻辑:

  • 把写死的首字母、正则规则改为函数动态入参,支持传入任意首字母生成对应匹配规则
  • 将源词库的文件读取逻辑移到循环外部,26次搜索仅需读取1次源文件,减少不必要的IO开销
  • 引入string模块直接获取a-z完整字母序列,无需手动拼写字母表
  • 用with上下文管理器处理文件读写,自动完成文件关闭操作,避免资源泄漏

修改后可直接运行的完整代码:

import re
import string
from pathlib import Path

def word_search(start_letter: str, main_text: str) -> None:
    # 动态生成对应首字母的正则匹配规则
    pattern = rf'\b{start_letter}\w{{4}}\b'
    # 提取所有符合规则的单词
    match_words = re.findall(pattern, main_text)
    # 去重后拼接为字符串
    unique_words = list(set(match_words))
    result_content = ' '.join(unique_words)
    # 写入对应首字母的独立结果文件
    output_file = Path(r'C:\Users\User1\OneDrive\Documents') / f'fivelist{start_letter}.txt'
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(result_content)

if __name__ == '__main__':
    # 提前读取一次词库源文件
    source_file = Path(r'C:\Users\User1\OneDrive\Documents\wordlist.txt')
    with open(source_file, 'r', encoding='utf-8') as f:
        word_list_content = f.read()
    # 遍历a-z所有字母依次执行搜索
    for letter in string.ascii_lowercase:
        word_search(letter, word_list_content)

补充说明

  • 如果需要同时匹配大写首字母的单词,可以在re.findall中加入flags=re.IGNORECASE参数忽略大小写
  • 如果需要按字母顺序排序结果,可以在去重后加一行unique_words.sort()再拼接字符串
  • 所有结果文件会按照fivelista.txt、fivelistb.txt……fivelistz.txt的规则命名,和原有命名逻辑保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 08:33:20