Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 试图计算某个字符串及其重复次数。另外,用其他字符替换字符。全部从文件读取_String_Character_Python 2.x - Fatal编程技术网

String 试图计算某个字符串及其重复次数。另外,用其他字符替换字符。全部从文件读取

String 试图计算某个字符串及其重复次数。另外,用其他字符替换字符。全部从文件读取,string,character,python-2.x,String,Character,Python 2.x,到目前为止,我的代码似乎在改变字母。然而,这是应该如何改变的: 所有的G变成C,所有的C变成G,所有的T变成A,所有的A变成T 这就是我的问题所在。例如,如图所示,由于T变成A,A变成T,代码只是将其保留为T。因为它将其更改为A,然后将同一个字符更改回T。我需要使其在同一时间进行所有更改,以避免重叠。G到C和C到G也是一样的 这是文本文件内内容的示例: GTCGACTGCACTCGCCCCCAGCAGAGAGAGAGAGATTAAGGCTGCGAAGGTCCAAGTCATGCATTTG TCTC

到目前为止,我的代码似乎在改变字母。然而,这是应该如何改变的: 所有的G变成C,所有的C变成G,所有的T变成A,所有的A变成T

这就是我的问题所在。例如,如图所示,由于T变成A,A变成T,代码只是将其保留为T。因为它将其更改为A,然后将同一个字符更改回T。我需要使其在同一时间进行所有更改,以避免重叠。G到C和C到G也是一样的

这是文本文件内内容的示例: GTCGACTGCACTCGCCCCCAGCAGAGAGAGAGAGATTAAGGCTGCGAAGGTCCAAGTCATGCATTTG TCTCAGGTGCAGTTGTCAGTGCAGTTCAGCAGACGGGCTAACGAGTGCATCTCTCAATTTACTT AATTGATCAAGTAAGTAGCAAGAAGGGCACAATTGAAGAATTCTTGTTTAATTGAATTGAATTTATATGCA

基本上就是这么大的绳子。我需要把上面列出的所有字母都倒过来。同样,我试图在更改字符之前计算以下字符串出现的次数:“GCAA”

这是我目前的代码:

f = open("filename.txt", "r")
from string import maketrans
table = maketrans("G", "C")
table = maketrans("C", "G")
table = maketrans("T", "A")
table = maketrans("A", "t")
print(f.read().translate(maketrans('G','C')))
print(f.read().translate(maketrans('C','G')))
print(f.read().translate(maketrans('T','A')))
print(f.read().translate(maketrans('A','T')))

print(table)

但是我不知道如何计算任何东西,所以我还没有谈到这一部分。

使用一个调用maketrans,如下所示:

from string import maketrans
table = maketrans("GCTA", "CGAT")
f = open("filename.txt", "r")
input = f.read()
print(input.translate(table))
print(input.count('GCAA'))

哦,太好了。它起作用了!所以基本上,像这样做一个单行maketrans可以绕过我遇到的问题。现在它确实将A更改为T,将T更改为A,而不存在任何重叠等情况。那么计算特定字符串/字符序列(如“GCAA”)的出现次数如何?我试着查找一些文档,发现str.count(“”)可能有一些用处,但我无法让它工作。例如,在交换字母之前计算GCAA。而且,在用maketrans切换字母后计算GCAA。1)是的。2) 看到最后一行:-)所以,这似乎是在字母切换后计算GCAA。如果我想在切换前也数数呢?我可以在maketrans行之前创建另一个变量,然后在末尾输出它?g=open(“filename.txt”,“r”)input2=g.read()print(input2.count('GCAA'))将这些行添加到最开头是否正确?我不确定,因为我两次都得到了相同的数字。我只是把翻译出来,让读取的“g”而不是“f”有不同的变量。实际上,它在翻译之前统计GCAA的出现次数,因为输入变量没有被翻译函数修改。