在.txt中切割字符串并仅返回一个新字符串

时间:2017-08-11 15:03:32

标签: python string slice

我想使用.txt文件的字符串行作为其他.txt文件中的搜索查询。但在此之前,我需要切割原始文本数据行的那些字符串。有一种简单的方法可以做到这一点吗?

这是我原来的.txt数据:

    CHEMBL2057820|MUBD_HDAC2_ligandset|mol2|42|dock12
    CHEMBL1957458|MUBD_HDAC2_ligandset|mol2|58|dock10
    CHEMBL251144|MUBD_HDAC2_ligandset|mol2|41|dock98
    CHEMBL269935|MUBD_HDAC2_ligandset|mol2|30|dock58
    ... (over thousands)

我需要一个新文件,新的新行只包含部分字符串,例如:

CHEMBL2057820
CHEMBL1957458
CHEMBL251144
CHEMBL269935

1 个答案:

答案 0 :(得分:0)

打开文件,读取行并在|字符处拆分每行,然后索引第一个结果

with open("test.txt") as f:
    parts = (line.lstrip().split('|', 1)[0] for line in f)
    with open('dest.txt', 'w') as dest:
        dest.write("\n".join(parts))

说明:

  • lstrip - 删除行前部的空白

  • split("|")为每行返回如下列表:['CHEMBL2057820', 'MUBD_HDAC2_ligandset', 'mol2', '42', 'dock12']

  • 由于我们只对第一部分进行了说明,因此在|字符上拆分行的其余内容是多余的,所以我们可以指定一个maxsplit参数,它将停止分割字符串经过多次改变之后就会受到影响

  • 所以split("|", 1) 给出['CHEMBL2057820','MUBD_HDAC2_ligandset|mol2|42|dock12']

  • 因为我们只对第一部分split("|", 1)[0]返回感兴趣 "CHEMBL..."部分