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
相关产品推荐
相关产品推荐

