Python打印 - > Perl STDIN行跳过问题

问题描述 投票:0回答:1

我是perl和python的新手。

我需要在python(dataframe)中进行文件处理,并且该文件需要在Perl中计算。

起初,我试图使用python子进程,它不工作(破管)

我需要来自python的多行,而perl代码需要读取和处理。

我只是用|在命令行中,它是工作,但perl跳过赔率数字行,只读取偶数行。

我该怎么办呢?

我的python代码是:

import pandas as pd

data = pd.read_csv('./data.txt', sep = '\t', header = None)

datalist = list(data[0] + '_' + data[1])

for line in kinase_list:

    print(line)

我的perl代码是://

use strict;

my %new_list = ();

while (<STDIN>){
  my $line = <STDIN>;
#  print STDERR $line;
#  chomp $line;
  my ($name, $title) = split('_', <STDIN>);
  $new_list{$title} = $name;
  print STDERR $name, "\t", $title, "\n";
}

print STDERR scalar(keys %new_list);

我的python输出657行,但perl刚出329。

我该怎么办呢?

python perl pipe
1个回答
2
投票

表达式<STDIN>从标准输入读取一行,因此您的Perl代码在while循环的每次迭代中读取两行。

这就足够了

while (<STDIN>) {
    my $line = $_;
    ...

要不就

while (my $line = <STDIN>) {
    ...
© www.soinside.com 2019 - 2024. All rights reserved.