gpt4 book ai didi

python - 如何计算Python中某个分区的字符出现次数?

转载 作者:行者123 更新时间:2023-12-01 04:48:53 24 4
gpt4 key购买 nike

我有一个包含序列的大文件;我只想分析最后一组字符,这些字符恰好是可变长度的。在每一行中,我想获取文本文件中每组的第一个字符和最后一个字符,并计算这些字符的总数。

以下是文件中数据的示例:

-1iqd_BA_0_CDRH3.pdb kabat H3 PDPDAFDV

-1iqw_HL_0_CDRH3.pdb kabat H3 NRDYSNNWYFDV

我想获取“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) 给出了所需的垂直所有行列表,但我无法对其进行计数或将其输出到文件。写入新文件只会写入原始文件最后一行的字符。谢谢!

最佳答案

不需要计数器:只需在分割后获取最后一个标记并计算第一个和最后一个字符:

first_counter = {}
last_counter = {}
for line in f:
line=line.split()[-1] # grab the last token
first_counter[line[0]] = first_counter.get(line[0], 0) + 1
last_counter[line[-1]] = last_counter.get(line[-1], 0) + 1

print("first ", first_counter)
print("last ", last_counter)

输出

first  {'P': 1, 'N': 1}
last {'V': 2}

关于python - 如何计算Python中某个分区的字符出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28824057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com