python - 尝试在 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
.
解决方案
在我们检查导致 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 文件,你不应该只取一列的值而不是整行。
推荐阅读
- css - CSS背景动画:不断地从上到下移动图像
- python - 如何在python中发送帖子请求
- c# - 将人们在 C# 中的 DataTable 中输入的值发送到微控制器
- asp.net - Serilog 未将日志插入数据库表
- linux - AWS-Linux-Docker-Selenium 网格无法启动服务 chrome:端口已分配错误
- flutter - 如何在颤动中实现超时按钮
- domain-driven-design - 处理需要生成多个命令的单个请求的 CQRS 和事件溯源方式
- arrays - 什么是创建结构并向其写入元素的正确方法,但在 C 中存在限制
- sql - 如何计算表 SQL Vertica 中的天数?
- python - Python:使用在类初始化中执行的代码来模拟或修补类