程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符?

开发过程中遇到我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符的问题如何解决?下面主要结合日常开发的经验,给出你关于我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符的解决方法建议,希望对你解决我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符有所启发或帮助;

这个脚本应该计算蛋白质的总重量,所以我决定计算脚本中某些字符的出现次数。然而,只有第一个方程产生的结果导致总权重为相同的值(第一个方程下的所有内容都为零,这绝对是不正确的)。如何让我的脚本注意其他行??? 这是一个缩短版:

akt3_file = open('AKT3 fasta.txt','r') #open up the fasta file

for line in akt3_file:

   ala =(sum(line.count('A') for line in akt3_filE)*89*1000) #this value is 1780000
   arg =(sum(line.count('R') for line in akt3_filE)*174*1000)
   asn =(sum(line.count('N') for line in akt3_filE)*132*1000)
   asp =(sum(line.count('D') for line in akt3_filE)*133*1000)
   asx =(sum(line.count('B') for line in akt3_filE)*133*1000)

protein_weight = ala+arg+asn+asp+asx
print(protein_weight) # the problem is that this value is also 1780000
akt3_file.close() #close the fasta file

解决方法

您遇到的问题是您试图多次迭代文件的行。然这实际上是可能的(与大多数迭代器不同,文件对象可以用 seek 重绕),但您没有正确执行此操作,因此除第一次之外的所有迭代都看不到任何数据。

在这种情况下,您可能根本不需要遍历这些行。只需将文件的全文读入一个字符串,并从该字符串中计算您想要的字符:

with open('AKT3 fasta.txt','r') as akt_3file:  # A with is not necessary,but a good idea.
    data = akt_3file.read()        # Read the whole filE into the data String.

ala = data.count('A') * 89 * 1000  # Now we can count all the occurrences in all lines at
arg = data.count('R') * 174 * 1000 # once,and there's no issue iteraTing the file,since
asn = data.count('N') * 132 * 1000 # we're not dealing with the file any more,just the
asp = data.count('D') * 133 * 1000 # immutable data String.
asx = data.count('B') * 133 * 1000

大佬总结

以上是大佬教程为你收集整理的我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符全部内容,希望文章能够帮你解决我想使用 sum 函数来计算特定字符的多次出现,但我的脚本仅适用于一个字符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。