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

Python中如何从文本文件提取目标名词并存储到列表

解决提取无下划线单词的问题

嘿,我来帮你搞定这个需求!你的核心问题是要从文本文件里提取不包含下划线的单词,对吧?先看看你现有代码的小问题:用readlines()之后再每行split(" "),会得到一个二维列表(每个子列表是一行的单词),而且完全没处理过滤下划线的逻辑。

给你两种解决方案,先看最直观的版本,方便理解:

# 初始化空列表用来存结果
target_words = []

# 用with语句打开文件,它会自动帮你关闭文件,避免资源泄漏
with open("text.txt", "r") as file:
    # 读取文件所有内容,然后用split()(不带参数)分割成所有单词
    # 不带参数的split()会自动处理所有空白字符:空格、换行、制表符都没问题
    all_words = file.read().split()
    
    # 遍历所有单词,过滤掉带下划线的
    for word in all_words:
        if "_" not in word:
            target_words.append(word)

# 打印结果,就是你想要的列表
print(target_words)

如果喜欢更简洁的写法,用Python的列表推导式一步到位:

with open("text.txt", "r") as file:
    target_words = [word for word in file.read().split() if "_" not in word]

print(target_words)

关键细节说明:

  • 为什么用file.read().split()而不是readlines()?因为readlines()会把文件按行拆分成列表,每行再split会得到嵌套列表;而read().split()直接把整个文件内容拆成单个单词的扁平列表,更符合你的需求。
  • 为什么不用split(" ")?如果文本里有连续空格或者换行,split(" ")会生成空字符串,而不带参数的split()会自动忽略这些,得到干净的单词列表。
  • with语句是Python处理文件的最佳实践,不用手动调用file.close(),代码更安全。

运行上面的代码,就能得到你想要的[apple, tree, banana, juice, dinner, time, divorce, lawyer, breakfast, table]啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:51:52