首页 > 解决方案 > 尝试在 CSV 中查找和替换时内存不足

问题描述

尝试在 12MB CSV 上查找和替换时,内存不足。

此代码检查 CSV 文件中名称的 5000 个名称列表,并将它们替换为单词“已编辑”

我尝试将它放到 AWS XL 实例上,但内存仍然不足。

import csv

input_file = csv.DictReader(open("names.csv"))
newword = 'REDACTED'

with open('new.txt', 'w') as outfile, open('test.txt') as infile:
    for line in infile:
        for oldword, newword in input_file:
            line = line.replace(oldword, newword)
            print('Replaced')
        outfile.write(line)

我希望它输出new.txt完整的替换。我目前得到MemoryError.

标签: python

解决方案


在我们检查导致 MemoryError 问题的原因之前,您的代码存在多个问题。

for oldword, newword in input_file:覆盖newword = 'REDACTED'

然后,据我所知,您不能多次迭代 DictReader

input_file = csv.DictReader(open("names.csv"))
for line in infile:
    for oldword, newword in input_file:

最后,我假设“names.csv”包含所有可能的名称,为什么要使用 DictReader 读取它。名称文件的结构是什么,如果它是 csv 文件,你不应该只取一列的值而不是整行。


推荐阅读