Mic*_*ter 12 python regex string split protein-database
目标:我正在尝试在Python RegEx中执行切换,其中split不能完全按照我的意愿执行.我需要在一个模式中剪切,但在角色之间.
我在找什么:
我需要在字符串中识别下面的模式,并将字符串拆分到管道的位置.管道实际上不在字符串中,它只显示我要分割的位置.
图案: CDE|FG
串: ABCDEFGHIJKLMNOCDEFGZYPE
结果: ['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
我尝试过的:
我似乎使用带括号的split是接近的,但是它并没有像我需要的那样将搜索模式保持在结果上.
re.split('CDE()FG', 'ABCDEFGHIJKLMNOCDEFGZYPE')
给人,
['AB', 'HIJKLMNO', 'ZYPE']
当我真的需要的时候,
['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
动机:
使用RegEx进行练习,并想看看我是否可以使用RegEx制作一个脚本来预测使用特定蛋白酶消化蛋白质的片段.
>>> pattern = 'CDE|FG'
>>> s = 'ABCDEFGHIJKLMNOCDEFGZYPE'
>>> s.replace('CDEFG',pattern).split('|')
['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
Run Code Online (Sandbox Code Playgroud)
你可以用re.split()积极的"环顾四周"来解决它:
>>> re.split(r"(?<=CDE)(\w+)(?=FG)", s)
['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
Run Code Online (Sandbox Code Playgroud)
请注意,如果其中一个剪切序列是空字符串,您将在结果列表中获得一个空字符串.你可以处理"手动",样本(我承认,它不是那么漂亮):
import re
s = "ABCDEFGHIJKLMNOCDEFGZYPE"
cut_sequences = [
["CDE", "FG"],
["FGHI", ""],
["", "FGHI"]
]
for left, right in cut_sequences:
items = re.split(r"(?<={left})(\w+)(?={right})".format(left=left, right=right), s)
if not left:
items = items[1:]
if not right:
items = items[:-1]
print(items)
Run Code Online (Sandbox Code Playgroud)
打印:
['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
['ABCDEFGHI', 'JKLMNOCDEFGZYPE']
['ABCDE', 'FGHIJKLMNOCDEFGZYPE']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3158 次 |
| 最近记录: |