【问题标题】:How to capture a certain number of characters after a substring?如何在子字符串后捕获一定数量的字符?
【发布时间】:2019-07-25 08:11:39
【问题描述】:

我对编码非常陌生,并且在最后一个令我难过的作业问题上需要帮助。我也不能对这个赋值使用正则表达式。

我已经得到了这个字符串,并且我已经做到了,所以我在'cat' 出现后拆分了这个字符串。

astr = 'accaggcatgattgcccgattccatgcggtcag'
x = astr.split('cat',1)[-1]
print(x)
gattgcccgattccatgcggtcag
y = astr.split('cat',2)[-1]
print(y)
gcggtcag

但是,如果我只想要字符串中每个 'cat' 后面的三个字母,我该怎么办?例如,我想得到'gat''gcg'

非常感谢任何帮助!

【问题讨论】:

    标签: python string substring


    【解决方案1】:

    使用切片,如[:3]:

    astr = 'accaggcatgattgcccgattccatgcggtcag'
    x = astr.split('cat',1)[-1][:3]
    print(x)
    y = astr.split('cat',2)[-1][:3]
    print(y)
    

    输出:

    gat
    gcg
    

    另外,另一个想法可能是:

    print(list(map(lambda x: x[:3],astr.split('cat')[1:])))
    

    【讨论】:

    • [-1] 的用途是什么?我正在尝试解决学习 python 的问题(这里是 VBA 模块),我尝试使用 find 方法来解决这个问题,但想了解您的解决方案
    • @urdearboy 的目的是获取最后一个元素,所以[-2]是倒数第二个,[-3]是倒数第三个等等..这里我们要做一个列表,所以列表的最后一个元素,另见this hot question
    • 天啊。我可以说,VBA 作为我的第一语言将使这门语言难以学习。我一直在寻找最终结果,就像我在 VBA 中所做的那样,然后我尝试将我所做的与其他人发布的内容进行比较,并且方法是如此不同。 用无穷无尽的答案列表来解决无穷无尽的练习问题
    【解决方案2】:

    你也可以一次性全部搞定:

    [x[:3] for x in astr.split('cat')[1:]]
    

    输出:

    ['gat', 'gcg']
    

    【讨论】:

    • 这正是我所追求的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多