Python从大型.csv文件中的文本文件中搜索字符串列表

2024-09-28 19:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉,因为我可能在这里犯了很多错误,但我正在尝试使用文件(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,,,

任何帮助都将受到感激


Tags: 文件csv字符串代码intxt列表data
3条回答

我会用熊猫来完成这个任务

尝试以下方法:

import pandas as pd

df = pd.read_csv('allDandHunique.csv')

with open('justgenes.txt', "r+") as file1:
    fileline1= file1.readlines()
    for x in fileline1: 
      for col in df:
         if col.str.contains(x, regex=False):
             ##do something here##

如果在读取中的文件时得到的是一个空白文件,我会检查并确保路径正确

由于我没有这些文件,我无法自己测试它,但我认为这段代码可能会有所帮助

data = open('allDandHunique.csv')
        
for x in data: # < - Loop through the list to check      
    with open('justgenes.txt', "r+") as file1:
        fileline1= file1.readlines()
        for line in fileline1: # < - Loop through each line
            if x in line:
                    print(x)

对于每个x in data,必须循环文件1中的所有行。如果我没有错,您需要为每次迭代打开您的文件,否则,当您到达EOF时,它将不返回任何内容

import csv

with open('justGenes') as infile:
    searchTargets = set(line.strip() for line in infile)


with open('allDandHunique.csv') as infile:
    for row in csv.reader(infile):
        if any(target in row for target in searchTargets):
            print(row)

相关问题 更多 >