如何将大型文本文件中的单词提取并存储到list中
大文本文件单词提取实现方案
核心逻辑
针对整本书量级的大文件,优先采用逐行读取的处理方式,避免一次性加载全部内容导致内存溢出,搭配正则表达式匹配单词边界自动过滤非单词字符。
基础实现(结果直接存入List)
使用Python标准库即可实现,无需安装第三方依赖:
import re def extract_words_to_list(file_path, case_sensitive=False, support_special_word=True): word_list = [] # 可根据需求调整正则匹配规则 if support_special_word: # 匹配带撇号、连字符的合法英文单词,例如don't、mother-in-law pattern = re.compile(r"\b[a-zA-Z]+(?:['-][a-zA-Z]+)*\b") else: # 仅匹配纯字母组成的单词 pattern = re.compile(r"\b[a-zA-Z]+\b") with open(file_path, mode='r', encoding='utf-8', errors='ignore') as f: for line in f: # 不区分大小写时统一转为小写 if not case_sensitive: line = line.lower() # 提取当前行所有匹配的单词 line_words = pattern.findall(line) word_list.extend(line_words) return word_list # 调用示例 target_word_list = extract_words_to_list("你的文件路径.txt")
进阶优化(超10G级超大文件适用)
如果文件体积远超可用内存,可使用生成器模式按需读取单词,无需一次性把所有单词存入List:
def extract_words_generator(file_path, case_sensitive=False, support_special_word=True): if support_special_word: pattern = re.compile(r"\b[a-zA-Z]+(?:['-][a-zA-Z]+)*\b") else: pattern = re.compile(r"\b[a-zA-Z]+\b") with open(file_path, mode='r', encoding='utf-8', errors='ignore') as f: for line in f: if not case_sensitive: line = line.lower() yield from pattern.findall(line) # 调用示例,迭代遍历所有单词 for word in extract_words_generator("你的超大文件路径.txt"): # 此处可按需处理单个单词 pass
参数说明
file_path:待处理的文本文件本地路径case_sensitive:是否区分大小写,默认False所有单词统一转为小写support_special_word:是否支持匹配带撇号、连字符的特殊英文单词,默认开启
内容的提问来源于stack exchange,提问作者Dolos
相关产品推荐
相关产品推荐

