Python print>Perl STDIN行跳过问题

2024-04-19 18:15:02 发布

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

我是perl和python的新手。你知道吗

我需要用python(dataframe)来处理文件,这个文件需要用Perl来计算。你知道吗

一开始,我尝试使用python子流程,但它不起作用(borken pipe)

我需要从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行。你知道吗

我该怎么修?你知道吗


Tags: 文件代码namenewdatatitlemystderr
1条回答
网友
1楼 · 发布于 2024-04-19 18:15:02

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

可以这样说

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

或者只是

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

相关问题 更多 >