gpt4 book ai didi

regex - 如何匹配两个 .csv 文件并写入第三个文件,用文件 1 中的数据替换文件 2 中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:15 25 4
gpt4 key购买 nike

我有 2 个 csv 和文本文件,文件 1 有 2 列,一列是基因 ID,两列是基因名称,文件 2 有很多列,列中的部分字符串是基因 ID,例如基因 ID(基因组)或伪基因id(基因组)。我想将文件 1 中的每个基因 ID 与文件 2 中的每个基因 ID 进行比较,并将文件 2 中的基因 ID 替换为文件 3 中打印的文件 1 中的基因名称。

文件1;

SPAR5_0024, coA binding domain protein                    
SPAR5_0025, hypothetical protein
SPAR5_0026, hypothetical protein

文件2;

SPAR5_0024(72.AFAX01.1.gb) SPAR5_0026(72.AFAX01.1.gbff) SPAR5_0025(72.AFAX01.1.gbff)

期望的输出(文件 3);

coA binding domain protein(72.AFAX01.1.gb) hypothetical protein(72.AFAX01.1.gbff) hypothetical protein(72.AFAX01.1.gbff)

我的代码得到一个空文件 3

这是正在运行的;

#!/usr/local/bin/perl -w

use strict;
use warnings;

my $file1 = "annot.txt";
my $file2 = "orthomcl.csv";
my $file3 = "combi.csv";

open (FILE1,"$file1") || die;
open (FILE2,"$file2") || die;
open (FILE3,">$file3") || die;


my @file1 = <FILE1>;
my @file2 = <FILE2>;


my %file1;
while ( my $value = <FILE1> ) {
chomp $value;
my @file1 = split /\s+/, $_;
$file1{$value} = 1;
}

my %file2;
while (my $value = <FILE2>) {
chomp $value;
my @file2 = split /\s+/, $_;
if ( $file1{ $value } ) {
$file2 = $file1{ $file2 };
print join( "\t" => @file2 ), $/;
}
}

close (FILE1);
close (FILE2);
close (FILE3);

期望的输出(文件 3)

coA binding domain protein(72.AFAX01.1.gb) hypothetical protein(72.AFAX01.1.gbff) hypothetical protein(72.AFAX01.1.gbff)

最佳答案

主要的错误是

my @file1 = <FILE1>;

my @file2 = <FILE2>;

消耗文件中的所有数据,这样就没有什么可读的了

while ( my $value = <FILE1> ) {

while (my $value = <FILE2>) {

关于regex - 如何匹配两个 .csv 文件并写入第三个文件,用文件 1 中的数据替换文件 2 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com