[英]Matching regex to set
我正在尋找一種方法來匹配行的開頭與正則表達式以及之后返回的行。 該集非常廣泛,因此我不能簡單地使用在set中匹配的Python正則表達式給出的方法。 我也想知道正則表達式是否是最好的解決方案。 我已經閱讀了http://docs.python.org/3.3/library/re.html唉,它似乎沒有得到答案。 這是我到目前為止所嘗試的...
import re
import os
import itertools
f2 = open(file_path)
unilist = []
bases=['A','G','C','N','U']
patterns= set(''.join(per) for per in itertools.product(bases, repeat=5))
#stuff
if re.match(r'.*?(?:patterns)', line):
print(line)
unilist.append(next(f2).strip())
print (unilist)
你看,問題是我不知道如何引用我的設置......
我試圖匹配它的文件看起來像:
@SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50 TTGCCTGCCTATCATTTTAGTGCCTGTGAGGTGGAGATGTGAGGATCAGT
+
hhhhhhhhhhghhghhhhhfhhhhhfffffeee[X]b[d[ed`[Y[^Y
你是以錯誤的方式去做的。
您只需將該組字符保留為正則表達式:
re.search('[AGCNU]{5}', line)
匹配從這5個字符構建的任何5個字符的模式; 與您使用設定線生成的相同3125種不同組合相匹配,但不需要預先構建所有可能的組合。
否則,正則表達式嘗試與patterns
變量沒有關聯,模式r'.*?(?:patterns)'
將匹配0或更多任意字符,后跟文字文本'patterns'
。
根據我從你的問題中所理解的,在我看來,這可能符合你的需要:
import re
sss = '''dfgsdfAUGNA321354354
!=**$=)"nNNUUG54788
=AkjhhUUNGffdffAAGjhff1245GGAUjkjdUU
.....cv GAUNAANNUGGA'''
print re.findall('^(.+?[AGCNU]{5})',sss,re.MULTILINE)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.