此项目的文件夹包含一个纯文本文件,该文件带有一个Fasta格式的DNA序列('MYH7.fasta')。
使用readlines()方法完成以下单元格的打开和读取文件,并将序列保存到名为DNAsequence的字符串中。
注意:要完成的零件用“ ...”表示。其他部分不应更改。
inFile = ...
DNAsequence = ''
for ... in ...:
if not(">" in Line):
if (len(Line) > 0):
DNAsequence = DNAsequence + Line
print(DNAsequence)
print(len(DNAsequence))
答案 0 :(得分:0)
我怀疑他们正在寻找答案
inFile = open("MYH7.fasta", "r").readlines()
在Perl中,连接代码是标准的(下面的示例)。我不确定在这里,因为inFile.readlines()应该基于回车符构造一个数组,并且您问题中的不变代码不允许使用其功能。以下代码回答了您的问题,使文件句柄保持打开状态,并省略了readlines()。
#!/usr/local/bin/python3
inFile = open("MYH7.fasta", "r")
DNAsequence = ''
for Line in inFile:
if not(">" in Line):
if (len(Line) > 0):
DNAsequence = DNAsequence + Line
print(DNAsequence)
print(len(DNAsequence))
Perl版本显示了如何在一行中串联多个命令。
#!/usr/bin/perl
my $DNAsequence;
open (IN, "<MYH7.fasta");
while (my $line = <IN>){
chomp $line;
next if $line =~ m/>/;
$line =~ m/[ACGT]{10}/i ? $DNAsequence .= $line : next;
}
close IN;
print $DNAsequence, "\n", length($DNAsequence) . " and Python s\*\*ks\n";
MYH7.fasta输入文件的格式为
>example_sequence
ACGCGTAGACGTATAG
我认为您的代码中存在错误,因为如果序列中包含回车符,那么它们将进入变量DNA序列。在Perl中,可以使用“ chomp”将其删除,也可以使用$ _ =〜s / \ n //(或例如$ line =〜s / \ n //)将其删除。 “ \ n”的存在可能会使后续分析变得复杂。