我正在尝试编写一个代码,该代码将从文件中获取数据并以不同的方式编写。我有大部分代码,但是当我运行它时,一切都在一行上。import csv#Step 4def read_data(filename): try: data = open("dna.txt", "r") except IOError: print( "File not found") return data#Step 5def get_dna_stats(dna_string): a_letters = "" t_letters = "" if "A" in dna_string: a_letters.append("A") if "T" in dna_string: t_letters.append("T") nucleotide_content = ((len(a_letters) + len(t_letters))/len(dna_string))#Step 6def get_dna_complement(dna_string): dna_complement = "" for i in dna_string: if i == "A": dna_complement.append("T") elif i == "T": dna_complement.append("A") elif i == "G": dna_complement.append("C") elif i == "C": dna_complement.append("G") else: break return dna_complement#Step 7def print_dna(dna_strand): dna_complement = get_dna_complement(dna_strand) for i in dna_strand: for j in dna_complement: print( i + "=" + j)#Step 8def get_rna_sequence(dna_string): rna_complement = "" for i in dna_string: if i == "A": rna_complement.append("U") elif i == "T": rna_complement.append("A") elif i == "G": rna_complement.append("C") elif i == "C": rna_complement.append("G") else: break return rna_complement#Step 9def extract_exon(dna_strand, start, end): return (f"{dna_strand} between {start} and {end}")#Step 10def calculate_exon_pctg(dna_strand, exons): exons_length = 0 for i in exons: exons_length += 1 return exons_length/ len(dna_strand)#Step 11def format_data(dna_string): x = "dna_strand"[0:62].upper() y = "dna_strand"[63:90].lower() z = "dna_strand"[91:-1].upper() return x+y+z当我运行它时,它应该输出一个看起来像这样的文件,但我的代码最终将每个单词都像这样放在第一行 我觉得它与write_results函数有关,但这就是我所知道的如何写入文件。我犯的第二个错误是我没有在 append 语句中正确调用函数。我试过连接,我试过格式化字符串,但现在我在我需要做的事情上遇到了障碍。
3 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
当您写入文件'\n'
时,每次您想在写入的文件的新行上添加某些内容时,都需要将 a 连接到字符串的末尾
例如:
output.append("The AT content is" + get_dna_stats() + "% of the DNA sequence." + '\n')
为了解决您的第二个问题,我会将您的代码更改为如下所示:
temp = "The AT content is" + get_dna_stats() + "% of the DNA sequence." + '\n'output.append(temp)
当您附加到列表并调用函数时,它将采用函数的文字文本而不是调用它。使用临时字符串持有者执行此操作将在连接字符串之前调用该函数。然后您就可以将字符串附加到列表中
子衿沉夜
TA贡献1828条经验 获得超3个赞
你从来没有告诉你的程序要换一条新线。您可以在"\n"每个字符串中附加或预先添加特殊字符,也可以通过以下方式以系统不可知的方式进行
import os
在文件的顶部并像这样编写 write_results 函数:
def write_results(output, filename):
try:
with open("output.csv","w") as csvFile:
writer = csv.writer(csvFile)
for i in output:
csvFile.write(i)
os.write(csvFile, os.linesep) # Add this line! It is a system agnostic newline
except IOError:
print("Error writing file")
添加回答
举报
0/150
提交
取消