gpt4 book ai didi

python - Python 中的内存错误

转载 作者:行者123 更新时间:2023-11-28 20:20:03 25 4
gpt4 key购买 nike

我有一个文本文件,它的大小是 300 MB。我想阅读它然后打印 50 个最常用的单词。当我运行程序时,它给我 MemoryError。我的代码如下:-

import sys, string 
import codecs
import re
from collections import Counter
import collections
import itertools
import csv
import re
import unicodedata


words_1800 = []

with open('E:\\Book\\1800.txt', "r", encoding='ISO-8859-1') as File_1800:
for line in File_1800:
sepFile_1800 = line.lower()
words_1800.extend(re.findall('\w+', sepFile_1800))


for wrd_1800 in [words_1800]:
long_1800=[w for w in words_1800 if len(w)>3]
common_words_1800 = dict(Counter(long_1800).most_common(50))

print(common_words_1800)

它给我以下错误:-

Traceback (most recent call last):
File "C:\Python34\CommonWords.py", line 17, in <module>
words_1800.extend(re.findall('\w+', sepFile_1800))
MemoryError

最佳答案

您可以使用 generator container而不是存储 re.findall 结果的列表,它在内存使用方面得到了很大优化,您还可以使用 re.finditer 而不是 findall 返回一个迭代器。

with open('E:\\Book\\1800.txt', "r", encoding='ISO-8859-1') as File_1800:
words_1800=(re.findall('\w+', line.lower()) for line in File_1800)

然后 words_1800 将是一个迭代器,包含创建的单词列表或使用

with open('E:\\Book\\1800.txt', "r", encoding='ISO-8859-1') as File_1800:
words_1800=(re.finditer('\w+', line.lower()) for line in File_1800)

得到一个包含迭代器的迭代器。

关于python - Python 中的内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32626380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com