为了账号安全,请及时绑定邮箱和手机立即绑定

带有用户定义函数的 Python 打印

带有用户定义函数的 Python 打印

拉风的咖菲猫 2021-08-05 17:52:13
我正在尝试编写一个代码,该代码将从文件中获取数据并以不同的方式编写。我有大部分代码,但是当我运行它时,一切都在一行上。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)

当您附加到列表并调用函数时,它将采用函数的文字文本而不是调用它。使用临时字符串持有者执行此操作将在连接字符串之前调用该函数。然后您就可以将字符串附加到列表中


查看完整回答
反对 回复 2021-08-05
?
子衿沉夜

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")


查看完整回答
反对 回复 2021-08-05
  • 3 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信