首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据值包含特定字符串的另一个csv文件隐藏另一个csv文件

根据值包含特定字符串的另一个csv文件隐藏另一个csv文件
EN

Stack Overflow用户
提问于 2018-06-10 06:17:51
回答 1查看 60关注 0票数 2

我正在尝试使用python删除file1.csv中包含file2.csv中的字符串的所有行。我希望它搜索file1.csv的column1中的所有值,并删除column1的值中包含与file2.csv中相同的字符串的整个行。

我知道bash中的grep -v可以用一条命令做同样的事情。但是,我需要对file2.csv中超过40,000个可能的字符串的取消file1.csv。Bash耗时很长,甚至在执行此命令时会崩溃。

有没有人知道一个可靠的脚本,它可以做grep -v在python中所做的事情,但在对包含数千个字符串的文件进行抑制时?

只是为了确保它是清楚的:

File1.csv:

column1,column2,column3
www.gamai4xheifw.com,4410,22
www.vfekjfwo11k.com,772,100
www.gosi4xnbdn.com,1793,39
www.tum33kkwfl.com,1100,2
www.eei4xelwf.com,9982,14

File2.csv:

column1
i4x

File3.csv:

column1,column2,column3
www.vfekjfwo11k.com,772,100
www.tum33kkwfl.com,1100,2

但是,同样,我需要在python中使用它,因为file2.csv中的字符串数量超过了40,000。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 06:36:53

一种可能适用于您的用例的解决方案是第三方库Pandas + regex。

但是,我强烈建议您使用更有效的算法,例如实现基于trie的Aho-Corasick的算法,如this solution

import pandas as pd
from io import StringIO

mystr1 = StringIO("""column1,column2,column3
www.gamai4xheifw.com,4410,22
www.vfekjfwo11k.com,772,100
www.gosi4xnbdn.com,1793,39
www.tum33kkwfl.com,1100,2
www.eei4xelwf.com,9982,14""")

mystr2 = StringIO("""column1
i4x""")

# read files, replace mystr1 / mystr2 with 'File1.csv' / 'File2.csv'
df = pd.read_csv(mystr1)
df_filter = pd.read_csv(mystr2)

# create regex string from filter values
str_filter = '|'.join(df_filter['column1'])

# apply filtering
df = df[~df['column1'].str.contains(str_filter)]

# export back to csv
df.to_csv('file_out.csv', index=False)

print(df)

               column1  column2  column3
1  www.vfekjfwo11k.com      772      100
3   www.tum33kkwfl.com     1100        2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50778991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档