【发布时间】:2012-05-05 16:55:42
【问题描述】:
我的函数有一个给定输入文件的规则列表。如果在给定的文件中违反了其中任何一个,我希望我的程序返回错误消息并退出。
- 文件中的每个基因都应该在同一条染色体上
因此对于这样的行:
NM_001003443 chr11 + 5997152 5927598 5921052 5926098 1 5928752,5925972, 5927204,5396098, NM_001003444 chr11 + 5925152 5926098 5925152 5926098 2 5925152,5925652, 5925404,5926098, NM_001003489 chr11 + 5925145 5926093 5925115 5926045 4 5925151,5925762, 5987404,5908098, 等等
文件中的每一行都是这一行的变体
因此,我想确保文件中的每一行都在 chr11 上
然而,我可能会得到一个包含不同 chr 列表(和任意数量的数字)的文件。因此,我想编写一个函数,以确保在该行中的 chr 上找到的任何数字对于每一行都是相同的。
我应该为此使用正则表达式,还是应该怎么做?顺便说一下,这是在python中。
如:chr\d+ ? 我不确定如何确保每行匹配的内容都相同...
我目前有:
from re import *
for line in file:
r = 'chr\d+'
i = search(r, line)
if i in line:
但我不知道如何确保每一行都相同...
参考 sajatack 的回答
fp = open(infile, 'r')
for line in fp:
filestring = ''
filestring +=line
chrlist = search('chr\d+', filestring)
chrlist = chrlist.group()
for chr in chrlist:
if chr != chrlist[0]:
print('Every gene in file not on same chromosome')
【问题讨论】:
-
你能举一个输入文本的例子(多于一行),什么被认为是“有效的”?如果该行有
chr11,那么文件中的每一行也应该在字符串中包含chr11? -
这听起来像 Python 的 string functions 和 regex library 的 非常 直接应用。也许有点太简单了,不值得在 SO 上发布问题......
-
对,很直接。我只是不断遇到错误,我是编程新手,需要一些帮助。
-
你试过什么?如果您无法让一些代码正常工作,您应该展示您遇到问题的代码,并描述哪些代码不能正常工作或不符合您的预期。
-
我添加了上面的内容,但不确定该去哪里...抱歉这个菜鸟问题。我真的需要一些帮助
标签: python regex conditional