我有一个文件加载了文字,让我们说,我只想阅读以'M'开头的文件(例如)以节省内存,我可以这样做,还是需要阅读完整的文件和过滤后?
由于
答案 0 :(得分:2)
如果您的文件是新行分隔词的列表,则可以执行
words_starting_in_M = []
with open(filepath) as wordsfile:
for line in wordsfile:
if line.startswith("M"):
words_starting_in_M.append(line.rstrip())
虽然你必须读取整个文件,但你要避免将它全部保存在内存中,这样你才能获得内存效率。
答案 1 :(得分:0)
您需要阅读整个文件,因为这是解析单词并查明是否有M的唯一方法。
你可以做你想做的事:
words_starting_in_M = []
with open(filepath) as myfile:
for line in myfile:
for word in line.split():
if word.startswith("M"):
words_starting_in_M.append(word.rstrip())
此代码读取一行(假设没有单词在两行或更多行上分割)。然后它按空格分割每一行,然后将那些以M开头的单词添加到words_starting_in_M。
答案 2 :(得分:0)
在这个硬币的另一面,如果你计划在同一个文件上多次使用,你可以存储在字典中以便在恒定时间内进行查找(但内存效率为O(n)):
from collections import defaultdict
word_lists = defaultdict(list)
with open(filepath) as myfile:
for line in myfile:
for word in line.split():
word_lists[word[0].lower()].append(word)