Python-根据缺少字符删除行

时间:2011-09-21 19:49:28

标签: python

我想从我的文件中删除一行,如果它包含A,C,G或T以外的字母。那么['TC','CY','GS','GA','CT ''将成为['TC','GA','CT']。

文件将包含未知数量的行,并且将包含任意顺序的2个或更多字母的模式。另外,我不知道存在的其他字母(Y或S或其他)。

我最好如何在Python中为此设置程序?我已经可以导入我的文件并读取行。

谢谢!

3 个答案:

答案 0 :(得分:3)

这个怎么样,作为一个班轮:

valid = [l.strip() for l in fh if all(c in 'ACGT' for c in l.strip())]

其中fh是你的文件句柄。

答案 1 :(得分:3)

您可以使用简单的正则表达式和列表理解来解决它。

>>> import re
>>> data = ['TC', 'CY', 'GS', 'GA', 'CT']
>>> [x for x in data if re.match(r'^[ACGT]+$', x)]
['TC', 'GA', 'CT']

答案 2 :(得分:0)

由于类型转换(你可以通过在之前分配set(“ACGT”)来减少它,但是一个很小的一行:

>>> l
['TC', 'CY', 'GS', 'GA', 'CT']
>>> [i for i in l if not set(i) - set("ACGT")]
['TC', 'GA', 'CT']