Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数问题_Python_Regex - Fatal编程技术网

python函数问题

python函数问题,python,regex,Python,Regex,我是一个彻头彻尾的巨蟒迷,所以请原谅我的简单问题。我正在尝试编写一个脚本,该脚本将在一个巨大的字符串中查找与ATxxxCA、ATxxxxCA、ATxxxxxCA或ATxxxxxCA匹配的所有序列,其中x可以是任何字符。当ATxxxCA模式匹配时,我希望脚本捕获匹配ATxxxCA周围的前10个和后10个字符。例如,结果可能如下所示:aaaaaaaaaaatxxxcbbbbbbbbb 我尝试按如下方式启动脚本: SeqMatch = input("enter DNA sequence to sear

我是一个彻头彻尾的巨蟒迷,所以请原谅我的简单问题。我正在尝试编写一个脚本,该脚本将在一个巨大的字符串中查找与ATxxxCA、ATxxxxCA、ATxxxxxCA或ATxxxxxCA匹配的所有序列,其中x可以是任何字符。当ATxxxCA模式匹配时,我希望脚本捕获匹配ATxxxCA周围的前10个和后10个字符。例如,结果可能如下所示:aaaaaaaaaaatxxxcbbbbbbbbb

我尝试按如下方式启动脚本:

SeqMatch = input("enter DNA sequence to search: ")
for s in re.findall(r'AT(.*?)CA', SeqMatch):
    if len(s) is < 10:
        print(s)
    else:
        print('no sequence matches')
SeqMatch=input(“输入要搜索的DNA序列:”)
对于findall(r'AT(.*CA')中的s,如下匹配:
如果len小于10:
印刷品
其他:
打印('无序列匹配')
我好像在if循环中做错了什么?有人能帮忙吗?提前谢谢

我好像在做错事 我的if循环

Python不知道“is”是什么意思(在本文中)

从if检查中删除“是”

if len(s) < 10:
    print(s)
else:
    print('no sequence matches')
你会在一个结果中得到你的10分,然后是AT和CA之间的东西,然后是你的10分

或者,您可以通过使用一组围绕整个事件的parethesis来捕获所有内容

 (.{10}AT.*CA.{10})
是创建/调试正则表达式的天赐良机。

以下是一个示例:

s = "a"*20 + "ATxxxxCA" + "b"*20
rec = re.compile(r'(AT.{3,6}CA)')
mo = rec.search(s)
print s[mo.start()-10:mo.end()+10]
注意重叠:

import re

adn = ('TCGCGCCCCCCCCCCATCAAGACATGGTTTTTTTTTTATTTATCAGATTACAGATACA'
       'GTTATGGGGGGGGGGATATACAGATGCATAGCGATTAGCCTAGCTA')


regx = re.compile('(.{10})(AT.{3,6}CA)(.{10})')
res = regx.findall(adn)
for u in res:
    print u

print

pat = re.compile('(.{10})(AT.{3,6}CA)')
li = []
for mat in pat.finditer(adn):
    x = mat.end()
    li.append(mat.groups()+(adn[x:x+10],))
for u in li:
    print u
结果

('CCCCCCCCCC', 'ATCAAGACA', 'TGGTTTTTTT')
('GGGGGGGGGG', 'ATATACA', 'GATGCATAGC')

('CCCCCCCCCC', 'ATCAAGACA', 'TGGTTTTTTT')
('TTTTTTTTTT', 'ATTTATCA', 'GATTACAGAT')
('GGGGGGGGGG', 'ATATACA', 'GATGCATAGC')

我觉得有必要指出BioPython——执行死刑时会发生什么?您希望发生什么?必须指出regexpal:非常适合开发/调试regexspresumable,字符串很长,并且有多个匹配项。因此,中间的通配符必须是非贪婪的。太棒了,谢谢你的帮助!这个网站和它的成员真是难以置信。我很感激你能容忍我愚蠢的问题!
('CCCCCCCCCC', 'ATCAAGACA', 'TGGTTTTTTT')
('GGGGGGGGGG', 'ATATACA', 'GATGCATAGC')

('CCCCCCCCCC', 'ATCAAGACA', 'TGGTTTTTTT')
('TTTTTTTTTT', 'ATTTATCA', 'GATTACAGAT')
('GGGGGGGGGG', 'ATATACA', 'GATGCATAGC')