如何用Python打开文件夹中所有文本文件并提取指定字符串存入array
Python提取文件夹内所有文本文件中含"Hello"的单词
没问题,我来帮你搞定这个需求!下面是分步骤的解决方案,附带可直接运行的代码示例:
核心思路
我们需要完成四个关键步骤:
- 遍历目标文件夹中的所有文本文件
- 逐个读取文件内容
- 筛选出包含"Hello"的单词
- 将符合条件的单词收集到数组(Python里的列表)中
基础实现方案(保留原始单词格式)
这个版本会严格按照空格拆分内容,完整保留单词附带的标点符号(比如HelloUser.会原样保留):
import os # 替换成你实际的目标文件夹路径 target_folder = "/path/to/your/txt/files" # 用来存储结果的数组 hello_words = [] # 遍历文件夹下的所有文件 for filename in os.listdir(target_folder): # 只处理后缀为.txt的文本文件,可根据需求调整规则 if filename.endswith(".txt"): # 拼接完整的文件路径 file_path = os.path.join(target_folder, filename) # 用with语句安全读取文件(自动关闭文件,避免资源泄漏) with open(file_path, "r", encoding="utf-8") as file: # 读取文件全部内容 content = file.read() # 按空格拆分内容为单词列表 words = content.split() # 筛选出包含"Hello"的单词 matched_words = [word for word in words if "Hello" in word] # 将匹配到的单词添加到结果数组 hello_words.extend(matched_words) # 打印最终结果 print("提取到的包含Hello的单词:", hello_words) # 针对你给出的示例文本,输出会是:['HelloWorld', 'HelloUser.']
进阶实现方案(提取纯单词,去除标点干扰)
如果希望去掉单词末尾的标点(比如把HelloUser.处理成HelloUser),可以用正则表达式精准匹配纯单词:
import os import re target_folder = "/path/to/your/txt/files" hello_words = [] # 正则表达式:匹配由字母、数字组成的完整单词 word_regex = re.compile(r"\w+") for filename in os.listdir(target_folder): if filename.endswith(".txt"): file_path = os.path.join(target_folder, filename) with open(file_path, "r", encoding="utf-8") as file: content = file.read() # 提取所有纯单词(自动过滤标点) words = word_regex.findall(content) # 筛选包含Hello的单词 matched_words = [word for word in words if "Hello" in word] hello_words.extend(matched_words) print("提取到的纯单词:", hello_words) # 针对示例文本,输出会是:['HelloWorld', 'HelloUser']
额外优化小技巧
- 遍历子文件夹:如果需要处理文件夹下所有子文件夹里的文本文件,把
os.listdir换成os.walk即可:for root, _, files in os.walk(target_folder): for filename in files: if filename.endswith(".txt"): file_path = os.path.join(root, filename) # 后续读取和筛选逻辑和上面一致 - 编码兼容:如果你的文本文件不是UTF-8编码(比如GBK),修改
open函数的encoding参数即可,比如encoding="gbk" - 大小写不敏感匹配:如果要匹配包含"hello"、"HELLO"等形式的单词,把筛选条件改成:
matched_words = [word for word in words if "hello" in word.lower()]
内容的提问来源于stack exchange,提问作者Khristian Morales




