所以我有一个氨基酸的文件,我正在读mdvfmkglskakegvvaaaektkqgvaeaagktkegvlyvgsktkegvvhgvatvaektk
eqvtnvggavvtgvtavaqktvegagsiaaatgfvkkdqlgkneegapqegiledmpvdp
dneayempseegyqdyepea
我有一个大写字母列表叫做氨基酸。问题是我看不懂顺序,因为字母是小写的。我一直想把它改成大写。读取这个文件没有问题,我以为我已经成功地将它的内容转换成了一个字符串(但也许我没有?)。你知道吗
aminoacids = ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y']
content1 = fh.readline() #first line, which is not the sequence
#print content1
charline1 = len(content1)-1 #number of characters in the first line
#print charline1
contentall = fh.readlines() #each line is converted into a string and put into a list
#print contentall
numlines = len(contentall) #number of elements in list = number of lines, not the first one
#print numlines
contentjoined = ''.join(contentall) #list elements are combined, but this includes new lines as characters
contentjoined = contentjoined.translate(None, "\n")
contentjoined = contentjoined.translate(None,''.join([i for i in contentjoined if i not in aminoacids]))
contentjoined = contentjoined.upper()
print contentjoined
numaa = len(contentjoined)
print numaa #this shouldn't be zero but it is
为什么这样不行?我能做些什么来修复它?我现在处于一个with
的状态……这以前不是问题,但现在是吗?Numaa是0,但它不应该是。我意识到我可以把小写字母添加到我的列表中,但是应该有一个更“pythonic”的方法来解决这个问题。你知道吗
拉入文件时,可以将所有内容转换为大写。也许是这样的?你知道吗
问题出在
translate()
命令中:在这里,您将用
None
替换找到的所有内容(我不确定您在contentjoined
或aminoacids
中有什么数据)。 如果你尝试:所以我猜你的整个字符串都变成了
None
。 签出translate() Docs是因为您在检查
aminoacids
中的字符串后将字符串设为大写吗?试着把contentjoined = contentjoined.upper()
向上移动一两行。你知道吗当您检查
aminoacids
时,您为str.translate
提供了一个完全小写的字符串,因此它与字符串不匹配。结果是这样的:如果您首先调用
upper
,那么您将比较一个大写字符串和一个大写字符串列表,这样实际上就有了匹配项。它看起来是这样的:如果要将字符串保留为小写字母,只需将其与大写字母进行比较并保留小写字母即可。看起来是这样的:
相关问题 更多 >
编程相关推荐