Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Python中的列表从CSV文件中删除条目_Python_Python 2.7 - Fatal编程技术网

基于Python中的列表从CSV文件中删除条目

基于Python中的列表从CSV文件中删除条目,python,python-2.7,Python,Python 2.7,我有一个CSV文件,其中包含以下内容: Apple,Bat Apple,Cat Apple,Dry Apple,East Apple,Fun Apple,Gravy Apple,Hot Bat,Cat Bat,Dry Bat,Fun ... 我还有一份清单如下: to_remove=[Fun,Gravy,...] 我想一个有效的方法来删除所有行从csv文件有任何一个字从列表中删除 我知道这样做的一种方法是读取csv文件的每一行,循环到_remove,查看该行中是否存在任何单词,如果没有匹配项

我有一个CSV文件,其中包含以下内容:

Apple,Bat
Apple,Cat
Apple,Dry
Apple,East
Apple,Fun
Apple,Gravy
Apple,Hot
Bat,Cat
Bat,Dry
Bat,Fun
...
我还有一份清单如下:

to_remove=[Fun,Gravy,...]
我想一个有效的方法来删除所有行从csv文件有任何一个字从列表中删除

我知道这样做的一种方法是读取csv文件的每一行,循环到_remove,查看该行中是否存在任何单词,如果没有匹配项,则将该行保存到另一个文件中

但是,我在csv文件和to_remove列表中都有很多条目(分别约为21000和300)。因此,我需要一种在Python中高效地实现它的方法

我没有访问群集的权限,因此基于map reduce的选项不是一个选项

toremove = ['Fun','Gravy']
with open('test.in','r') as fin, open('test.out','w') as fout:
    for i in filter(lambda x:not any(i for i in toremove if i in x), fin.readlines()):
        fout.write(i)

with open('test.out') as fout:
    print fout.read()
测试。在
中:

Apple,Bat
Apple,Cat
Apple,Dry
Apple,East
Apple,Fun
Apple,Gravy
Apple,Hot
Bat,Cat
Bat,Dry
Bat,Fun
[输出:

Apple,Bat
Apple,Cat
Apple,Dry
Apple,East
Apple,Hot
Bat,Cat
Bat,Dry

grep-Ev'(Fun | Gravy)filename
您可以尝试使用正则表达式或简单地并行化代码。你能做的只有这么多。巨大的操作总是以某种方式巨大。
fin.readlines()
会将整个文件读入内存。不完全是OP想要的。