【问题标题】:How to slice a string with different starting and end points in Python如何在 Python 中对具有不同起点和终点的字符串进行切片
【发布时间】:2022-01-05 11:34:26
【问题描述】:

我有一个类似rna = "UACGAUGUUUCGGGAAUGCCUAAAUGUUCCGGCUGCUAA" 的字符串,我想遍历该字符串并捕获以'AUG''UAA''UAG''UGA' 开头的不同字符串。

这是我目前写的代码:

rna = "UACGAUGUUUCGGGAAUGCCUAAAUGUUCCGGCUGCUAA"      # start --> AUG; STOP --> UAA, UAG, UGA
hello = " "
n = 3
list = []
for i in range(0, len(rna), n):
    list.append(rna[i:i+n])

for i in list:
    if i == "AUG":
        hello += i
        i = i + 1
        if i != "UAA" or "UAG" or "UGA":
            hello += i

这给了我一个类型错误:-

【问题讨论】:

  • 为了清楚起见,请附上错误信息。
  • 什么类型错误?给minimal reproducible example。请注意您犯了这个错误:stackoverflow.com/q/15112125/3001761
  • 最后一行的I 是什么?
  • 请不要包含文本内容的图片 - 它们无法被搜索和索引,不要像文本那样缩放,并且用户完全无法访问,例如屏幕阅读器。但从根本上说,错误告诉你问题出在哪里 - i 是一个 string (你只是将它与 "AUG" 进行比较,所以我猜你知道)所以 + 1 在应用时没有任何意义给它。
  • 似乎使用i有时作为列表索引(i = i + 1)有时用于引用列表内容(i == "AUG")。这是行不通的,你自然会得到TypeError 异常,就像你得到的一样。

标签: python python-3.x list slice


【解决方案1】:

这行代码的问题:

if i != "UAA" or "UAG" or "UGA":
            hello += i

您应该单独检查对象i 的每个值:

if i!= "UAA" or i!= "UAG" or i!= "UGA":
            hello += i

或者你可以简单地检查条件:

 if i not in ["UAA", "UAG", "UGA"]:
           hello += i

你也不能在这行代码中将字符串值与 int 值连接起来:

i = i + 1

您应该将1 转换为字符串数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2011-12-03
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多