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