有没有办法改变我的命令来重新格式化我的输出文件?

Is there a way to alter my command to reformat my output file?

我制作了一个 blast 文件。我执行了 blast(x) 命令输出 "qeseqid""sseqid":

QRv313_NP342_d0_h2_l9    YN13213
QRv313_NP9080_d0_h1_l1   YN5345
QRv313_NP123_d0_h1_l7    YN756
QRv313_NP123_d0_h1_l113  YN9768
QRv313_NP654_d0_h2_l6    YN432
QRv313_NP8_d0_h1_l1      YN3242
QRv313_NP756_d0_h1_l2    YN85686

我在 command-line 中的 nano 中编写了一个命令以获得以下所需的输出:

NP342    YN13213
NP9080   YN5345
NP123    YN756
NP123    YN9768
NP654    YN432
NP8_d0   YN3242
NP756    YN85686

我编写了一个 nano 脚本来为我提供制表符分隔的查询列和主题 ID。我只是无法从这里前进。我不确定如何修改我的脚本以提供我想要的输出。

import sys
file_object = open(sys.argv[1])

for my_data in file_object:

  list =  my_data.split("\t")

  print (list [0], list [1])

有没有办法改变我的命令,以便我可以收到所需的输出?

如有任何建议,我们将不胜感激!

你可以试试:

import sys
  
with open(sys.argv[1]) as file_object:
    for my_data in file_object:
        a_list = my_data.split('\t')
        print(a_list[0].split('_')[1], a_list[1], sep='\t', end='')

list 是内置类型(不要将其用作名称)。上面的代码 split\t 上添加你的数据,然后在 _ 上添加第一个字段。然后打印由 \t 分隔的所需数据(包含 end='' 以避免打印第二个 newline)。