You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用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

火山引擎 最新活动