比较两个列表并找出相似之处

2024-10-03 21:33:25 发布

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

我有这样一个清单:

C
E

我想在下表(表1)中找到它们,并将它们写入第二个表(表2)

有人用python或perl脚本来做这件事吗?在

表1:

^{pr2}$

表2:

C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
C   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
E   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
E   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
E   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0
E   MU_ADO_2    1120    MU_ADO_2.1120   1.00E+06    s_2_merged  Resistance  A   AG  169 107 1   167 1   36.1308 s_6_merged  Resistance  A   AG  8   9   0   8   0   35.6751 s_7_merged  Suseptible  A   AG  7   2   0   7   0   20.9415 s_3_merged  Suseptible  A   AG  5   8   0   5   0

Tags: 脚本mergedperladoagmuresistancepr2
3条回答

由于您包含了标记,我假设您对其他*nix实用程序是开放的,下面是一个sed解决方案:

sed '/^[^CE]/d' table1.txt > table2.txt

这将删除table1.txt中所有不以C或E开头的行

不如grep

grep -e '^[CE]' source.file

您还可以将其重定向到新文件中:

^{pr2}$

另一种方法,在python中:

keys = ['C', 'E']
with open('out.txt', 'a') as out:
    with open('test.txt') as f:
        for line in f:
            for key in keys:
                if line.startswith(key):
                    out.write(line)
                    break

test.txt是一个包含表1的文件,复制粘贴。
out.txt是获取表2的文件

相关问题 更多 >