我有一个包含序列的大文件;我只想分析最后一组字符,这些字符恰好长度可变。在每一行我想采取的第一个字符和最后一个字符的每一个文本文件集,并计算这些字符的总实例。你知道吗
以下是文件中数据的示例:
-1iqd\u BA\u 0\u CDRH3.pdb kabat H3pDPDAFDV
-1iqw\u HL\u 0\u CDRH3.pdb kabat H3NRDYSNNWYFDV
我想取“H3”后面的第一个字符和最后一个字符(在示例中都是粗体)。 这两行的输出应为:
第一个计数器({N':1,'p':1})
最后一个计数器({V':2})
这就是我目前所做的:
f = open("C:/CDRH3.txt", "r")
from collections import Counter
grab = 1
for line in f:
line=line.rstrip()
left,sep,right=line.partition(" H3 ")
if sep:
AminoAcidsFirst = right[:grab]
AminoAcidsLast = right[-grab:]
print ("first ",Counter(line[:] for line in AminoAcidsFirst))
print ("last ",Counter(line[:] for line in AminoAcidsLast))
f.close()
这只打印最后一行数据的计数,如下所示:
first Counter({'N': 1})
last Counter({'V': 1})
如何计算文件中所有行中的所有这些字符? 笔记: 打印(AminoAcidsFirst)或(AminoAcidsLast)会给出所需的所有垂直行的列表,但我无法计数或输出到文件。写入新文件只会写入原始文件最后一行的字符。 谢谢!你知道吗
创建2个空列表并在每个循环中追加,如下所示:
此处:
创建空列表:
AminoAcidsFirst = [] AminoAcidsLast = []
在每个循环中追加:
AminoAcidsFirst.append(right[:grab]) AminoAcidsLast.append(right[-grab:])
不需要计数器:只需抓取
split
ing之后的最后一个标记,并计算第一个和最后一个字符:输出
我想指出两件重要的事
切勿透露计算机上的文件路径,如果您来自科学界,这一点尤其适用
使用
with...as
方法,您的代码可以更加python现在是程序
不要做
line.strip()[-1]
,因为sep
验证很重要输出
注意:数据文件可能会非常大,您可能会遇到内存问题或计算机挂起。那么,我可以建议你读懒书吗?接下来是更健壮的程序
相关问题 更多 >
编程相关推荐