Python编程

Python编程,python,Python,我的作业要求进行函数调用readFasta
接受
1
论据:
这个
 名称
属于
A.
 法斯塔
 格式
文件
(fn)
包含
1
或
更多
序列。
这个
作用
应该
阅读
 这个
文件
和
 返回
A.
 字典
哪里
这个
钥匙
是
这个
法斯塔
标题
及
这个
价值观
 是
这个
相应的
序列
从…起
文件
fn
转换
到
串。
 制作
当然
那个
 你
不要
包括
任何
新的
线
或
其他
空白
人物
在里面
这个
 序列
在里面
 这个
字典 对于ex,如果afile.fa看起来像

我的作业要求进行函数调用readFasta
接受
1
论据:
这个
 名称
属于
A.
 法斯塔
 格式
文件
(fn)
包含
1
或
更多
序列。
这个
作用
应该
阅读
 这个
文件
和
 返回
A.
 字典
哪里
这个
钥匙
是
这个
法斯塔
标题
及
这个
价值观
 是
这个
相应的
序列
从…起
文件
fn
转换
到
串。
 制作
当然
那个
 你
不要
包括
任何
新的
线
或
其他
空白
人物
在里面
这个
 序列
在里面
 这个
字典

对于ex,如果afile.fa看起来像:

>one
atctac
>two
gggaccttgg
>three
gacattac
然后a.readFasta(f)返回:

如果我尝试过写一些代码,但由于我对编程完全是新手,它对我来说并不太奏效。大家能帮帮我吗。非常感谢你。这是我的密码:

import gzip

def readFasta(fn):
    if fn.endswith('.gz'):
        fh = gzip.gzipfile(fn)
    else:
        fh = open(fn,'r')

    d = {}

    while 1:
        line = fh.readline()

        if not line:
            fh.close()
            break

        vals = line.rstrip().split('\t')
        number = vals[0]
        sequence = vals[1]

        if d.has_key(number):
            lst = d[number]

            if gene not in lst:
                # this test may not be necessary
                lst.append(sequence)
        else:
            d[number] = [sequence]

    return d
以下是我在afile.txt中得到的内容

一个atctac

两个gggaccttgg

三加卡塔克


你的帖子有点让人困惑。我假设您希望它返回一个dict。在这种情况下,您将把它写成
{'one':'actg','two':'aaccttgg'}
。如果您正确地显示了文件格式,那么这个函数应该可以完成这个任务

import gzip

def read_fasta(filename):
    with gzip.open(filename) as f:
        return dict(line.split() for line in f)

你的帖子有点让人困惑。我假设您希望它返回一个dict。在这种情况下,您将把它写成
{'one':'actg','two':'aaccttgg'}
。如果您正确地显示了文件格式,那么这个函数应该可以完成这个任务

import gzip

def read_fasta(filename):
    with gzip.open(filename) as f:
        return dict(line.split() for line in f)


你可能会有更好的运气,因为它更适合生物信息学类型的问题。你应该重新格式化你的代码。突出显示代码并按带有数字的图标。我正在尝试编辑格式,它在预览中正确显示,但我的更改只影响
import gzip
行。我洗了手,冒着被社区维基攻击的风险。奇怪。我试图格式化它,所有的东西都显示在预览窗格上。保存时,一切看起来都一团糟。@pmt0512:Python,我认为StackOverflow更不喜欢空格和制表符的混合。通常,强制编辑器忘记选项卡的存在是最容易的(至少对于Python源代码是这样)。你可能会有更好的运气,因为它更适合生物信息学类型的问题。你应该重新格式化你的代码。突出显示代码并按带有数字的图标。我正在尝试编辑格式,它在预览中正确显示,但我的更改只影响
import gzip
行。我洗了手,冒着被社区维基攻击的风险。奇怪。我试图格式化它,所有的东西都显示在预览窗格上。保存时,一切看起来都一团糟。@pmt0512:Python,我认为StackOverflow更不喜欢空格和制表符的混合。通常,强制编辑器忘记选项卡的存在是最容易的(至少对于Python源代码是这样)。我刚刚使用了代码,但Python2.6版本仍然出现错误:>>>将readFasta作为b导入>>>b.readFasta('afile.txt')回溯(最近一次调用):文件“”,第1行,在文件“readFasta.py”中,第37行,在readFasta索引器中:列出索引range@pmt0512. 如果你把它单独放在一个文件中,那会有帮助。我不知道我给你的代码是从哪一行开始的。它应该在一个九行长的文件中作为参考。尽管如此,我的代码(AKAIK)中没有任何地方会产生索引错误。一个atctac两个gggaccttgg三个GACATTACH,我不知道如何在注释中编辑文件使其看起来准确,但它包含三行,第一行是一行,tab,atctac,第二行是两行,tab,ggaccttgg,第三行是三行,tab,gacattac。我只是想让函数在读取这个文件时返回,作为赋值给出的dict作为示例。ThanksI刚刚使用了代码,但在python 2.6版本中仍然出现错误:>>>将readFasta作为b导入>>>b.readFasta('afile.txt')回溯(最近一次调用):文件“”,第1行,在文件“readFasta.py”中,第37行,在readFasta索引器中:列出索引range@pmt0512. 如果你把它单独放在一个文件中,那会有帮助。我不知道我给你的代码是从哪一行开始的。它应该在一个九行长的文件中作为参考。尽管如此,我的代码(AKAIK)中没有任何地方会产生索引错误。一个atctac两个gggaccttgg三个GACATTACH,我不知道如何在注释中编辑文件使其看起来准确,但它包含三行,第一行是一行,tab,atctac,第二行是两行,tab,ggaccttgg,第三行是三行,tab,gacattac。我只是想让函数在读取这个文件时返回,作为赋值给出的dict作为示例。谢谢