在python2.7.5中从文本文件中提取字符串

2024-09-28 21:25:38 发布

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

你好,我是python新手,希望你能帮助我。我有一个文本文件(称之为数据.txt)利用基因数与相应的rs数和一定的距离测度。数据如下:

   rs1982171     55349     40802

   rs6088650     55902     38550

   rs1655902     3105      12220

   rs1013677     55902      0

其中第一列是rs数,第二列是基因数,第三列是某种距离测度。数据要大得多,但希望上面的内容能让您了解数据集。我要做的是找到与某个基因相对应的所有rs数。例如,对于上面的数据集,基因55902={rs6088650,rs1013677}。理想情况下,我希望我的代码能找到与给定基因对应的所有rs数。因为我现在无法做到这一点,所以我编写了一个简短的代码,它给出了包含字符串“55902”的行数据.txt文件:

^{pr2}$

此代码的问题是输出如下:

    rs6088650    55902     38550

    rs1655902    3105      12220

    rs1013677    55902     0

我希望我的代码忽略rs号中的字符串“55902”。换句话说,我没有我的代码来输出上面输出的第二行,因为基因数不是55902。我希望我的输出是:

       rs6088650     55902   38550

       rs1013677     55902   0

如何修改上面的代码来实现我想要的。任何帮助都将不胜感激。提前谢谢。在


Tags: 数据字符串代码txt利用距离基因测度
3条回答

使用更强大的正则表达式可以很容易地做到这一点。一种可能的快速解决方案是使用以下形式的正则表达式:

r'\b55902\b'

\b是单词的边界。在

您可以使用word boundary (^{}),以匹配整个单词搜索:

>>> import re
>>> re.search(r"\b55902\b", "rs1655902     3105      12220")
>>> re.search(r"\b55902\b", "rs6088650     55902     38550")
<_sre.SRE_Match object at 0x7f82594566b0>

^{pr2}$

这里不需要正则表达式,因为您只需要一个简单的静态序列。这条线:

if re.search("55902",line):

可以表达为:

^{pr2}$

如果只想检查第二列,请先拆分行:

if '55902' in line.split()[1]:

由于您现在已经检查了正确的列,请检查相等性而不是成员身份:

if line.split()[1] == '55902':

相关问题 更多 >