如何从第一列的句点后删除第二个和其余数字?

use*_*646 0 python

如何从第一列中删除第二个和其余数字?
例如,

HP_000083.21423      N  -1  NO  99.8951%    0.000524499999999983
NP_075561.1_1908    N   -1  NO  99.9697%    0.000151499999999971
Run Code Online (Sandbox Code Playgroud)

我想从"NP_075561.1_1908"中删除"_1908"

和"1423来自"HP_000083.21423"

不从后续列中删除其他项目.

预期的行将是:

HP_000083.2         N          -1       NO        99.8951%  0.000524499999999983
NP_075561.1             N           -1      NO        99.9697%  0.000151499999999971
Run Code Online (Sandbox Code Playgroud)

这是我的代码:你们中的一些人过去曾提供过这个解决方案的一部分.

    for line in fname:
        line = re.sub('[\(\)\{\}\'\'\,<>]','', line)
        line = re.sub(r"(\.\d+)_\d+", r"\1", line) 
        fields = line.rstrip("\n").split()
       outfile.write('%s  %s  %s  %s  %s  %s\n' % (fields[0],fields[1],fields[2],fields[3],fields[4],(fields[5])))
Run Code Online (Sandbox Code Playgroud)

先谢谢你们,干杯,

Sve*_*ach 5

在这种情况下,我会避免使用正则表达式.您可以轻松地使用标准字符串方法:

for line in infile:
    first_col, rest = line.split(" ", 1)
    first_col = first_col[:first_col.index(".") + 2]
    output_line = str.join(" ", (first_col, rest))
    outfile.write(output_line)
Run Code Online (Sandbox Code Playgroud)