【发布时间】:2020-12-21 17:47:21
【问题描述】:
抱歉,因为我可能在这里犯了一大堆错误,但我正在尝试使用文件 (justgenes.txt) 中的字符串列表对一个大型 CSV 文件进行搜索,并返回以字符串为特色的行justgenes 列表。
我主要使用 BASH,但我的代码占用了超过 100GB 的内存并且崩溃了:
grep -f justgenes.txt allDandHunique.csv > HPCgenesandbugs.csv
因此,我尝试在 python 中执行此操作,假设它会更高效,但我对此知之甚少。
我使用这段代码(我从网上获取的),但最后得到一个空文件:
data = open('allDandHunique.csv')
with open('justgenes.txt', "r+") as file1:
fileline1= file1.readlines()
for x in data: # <--- Loop through the list to check
for line in fileline1: # <--- Loop through each line
if x in line:
print(x)
justgenes 文件如下所示:
1A0N_B
1A1A_A
1A4I_A
1A5Y_A
1ACO_A
1AGN_A
1AGS_A
1AJE_A
1AJJ_A
1AP0_A
1APQ_A
虽然 csv 看起来像这样:
"0403181A:PDB=1BP2,2BPP",
"0403181A:PDB=1BP2,2BPP",,,
"0706243A:PDB=1HOE,2AIT,3AIT,4AIT",
"0706243A:PDB=1HOE,2AIT,3AIT,4AIT",,,
"1309311A:PDB=1EMD,2CMD",
"1309311A:PDB=1EMD,2CMD",,,
"1513188A:PDB=1BBC,1POD",
"1513188A:PDB=1BBC,1POD",,,
0308206A,
0308206A,,,
0308221A,
0308221A,,,
0308230A,
0308230A,,,
如有任何帮助,我们将不胜感激。
【问题讨论】:
-
我希望搜索 csv 中的所有列
-
好的,请稍等
-
如果您添加了匹配行的示例以及您想要输出的内容,将会有所帮助。你的 justgenes.txt 有多大?你的 allDandHunique.csv 有多大?当其中一个字符串(例如 1A1A_A)与列完全匹配时,您想匹配该行还是它可以是列的子字符串?如果有匹配项,您是要输出整行,还是只输出行的一部分?
-
所以,我想要任何包含整个字符串的行(例如 1A1A_A)在该行的任何位置。输出应该是包含列表中字符串的每一(整)行。输出示例将是“1513188A:PDB=1BBC,1A1A_A”,我知道在示例数据中不可见。 justgenes.txt 文件有 1,866,642 行,allDandHunique.csv 有 5,610,939 行。
标签: python string search design-patterns grep