转到字符串中的某个位置

2024-09-30 04:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到一个特定的点,这个点和我得到的东西相反。在

aaaaaaaa cccccccc tttttttttt gggggggggg TTTTTTTT GGGGGGGG AAAAAAAAAA CCCCCCCC

所以你需要转换坐标。在底部钢绞线上,底部0(最右侧的C)与顶部钢绞线上的底部39相对。基数1与基数38相对。基数2与案例37相反。(重要的一点:注意当你每次把这两个数相加时会发生什么。)所以基数10是以29为基数,19基数是以20为基数。在

所以:如果我想在底部找到以10-20为底的链,我可以看看顶部的以20-29为底的(然后反向补足)。在

我写了以下内容:

fp = open(infile, 'r')
for line in fp:
   tokens = line.split()
   exonstarts = tokens[8][:-1].split(',')
   exonends = tokens[9][:-1].split(',')
   zipped = list(zip(exonstarts, exonends))
   chrom_len = len(chr_string)
   s = ''.join(bc[base.upper()] for base in chr_string[-starts-1:-ends-1] for starts, ends in zipped)+'\n'

然而,每次我这样做我都会得到:

错误:未定义全局名称“starts”

我怎么解决这个问题??在


Tags: inforstringlenlinesplit基数fp
3条回答

试着在最后一个词后面加上括号:

s = ''.join(bc[base.upper()] for base in (chr_string[-starts-1:-ends-1]\
                                         ^
            for starts, ends in zipped)) +'\n'
                                      ^

你在这里定义了两个不同的生成器。这相当于:

^{pr2}$

你定义了exonstrats然后引用了starts,这是没有定义的。在

看起来您试图在生成器表达式中执行太多操作。在

这两个for是错误的。你的意思是:

s = ''.join(bc[base.upper()] for starts,ends in zipped for base in chr_string[-starts-1:-ends-1])+'\n'

然后为第二个for定义starts和{}。在

鉴于您今天提出的问题,我建议您阅读a good book,例如Dive Into Python 3,这样您就可以自己解决这些问题了。在

相关问题 更多 >

    热门问题