【问题标题】:Split string into substring over '\n' in Python在 Python 中通过 '\n' 将字符串拆分为子字符串
【发布时间】:2018-07-24 09:01:27
【问题描述】:

我正在用 Python 读取一个长 DNA 数据文件的字符串摘录。某些字符串提取在 .txt 文件中的新行上运行。 Python 使用字符串中的 '\n' 字符打印这些字符串提取。

我的问题是我不知道如何检测位于换行符'\n' 两侧的子字符串。

IE:在下面的代码中,找到了'gca',但没有找到'taa'。什么是正确的解决方案?

l = 'gcaacacgactta\naccaagctgt'

for i in range(0, len(l), 3):

    if l[i:i+3] == 'taa':
        print(l[i:i+3])

    elif l[i:i+3] == 'gca':
        print((l[i:i+3]))

>>>gca

编辑:我打算搜索 'aac' 而不是 'taa'。无论如何,.replace() 有效。多谢你们!

【问题讨论】:

  • 删除所有\n? l = l.replace("\n", "")
  • 如果打印的是\n,那么字符串中必须有\\n

标签: python string split newline


【解决方案1】:

您每 3 个字符迭代一次,在这种情况下:gcaacacgacttaaccaagctgt。您找不到taa,因为它不在上述元素之一中。要同时拥有gcataa,您可以这样做:

l = 'gcaacacgactta\naccaagctgt'
l = l.replace("\n","")

for i in range(len(l)):

    if l[i:i+3] == 'taa':
        print(l[i:i+3])

    elif l[i:i+3] == 'gca':
        print((l[i:i+3]))

输出:

gca
taa

编辑

如果你想要gcaaac,并且你所有的序列都是三倍的,那么replace 就足够了,这就是输出:

gca
aac

【讨论】:

    【解决方案2】:

    1) 将 '\n' 替换为 ""

    2) 将range(0, len(l), 3) 更改为range(len(l)-3)

    l = 'gcaacacgactta\naccaagctgt'
    
    l=l.replace("\n","")
    
    for i in range(len(l)-3):
    
        if l[i:i+3] == 'aac':
            print(l[i:i+3])
    
        elif l[i:i+3] == 'gca':
            print((l[i:i+3]))
    

    【讨论】:

    • 我投了反对票,因为乔的答案非常相似。谢谢
    • @JON,你能检查一下答案时间表吗?
    • 正确,我看到了,谢谢
    • 我试图改变它,但应用程序不允许,我只能在答案与以前有所不同时才能这样做。从下次开始我也会改变它,谢谢
    【解决方案3】:

    希望对你有帮助

    l = 'gcaacacgactta\nataaccaagctgt'
    l=l.replace("\n","")
    taa_index=l.find('taa')
    while(True):
        print(l[taa_index:taa_index+3])
        p=(l[taa_index+3:]).find('taa')
        if p!=-1:
            taa_index = p+taa_index+3
        else:
            break
    

    同样,你可以为 'gca' 做。现在这适用于多个“taa”

    【讨论】:

    • 如果 'taa' 在字符串中出现两次怎么办?
    猜你喜欢
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2015-01-16
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多