我一直在研究一個程序,它將一行代碼中的字符(hhhhhhhhhhhhhhhhghhhhhfhhhhhfffffeee [X] b [d [ed [[Y [^ Y,十進制ascii等效並替換結果行。這是我迄今爲止...遍歷一行中的字符並替換它們
f2 = path to file
if re.match('[AGNTC]{5}', line):
next_line = next(f2)
unilist.append(next(f2))
for j in unilist:
j=[x for x in unilist if x]
g=[word.strip() for word in j]
g= ''.join(g)
for ch in g:
char= ord(ch)
char= int(char)
ch= str(char-33)
一切正常,到了這一點。不久前我開始學習python,我只需要指針。我想根據它們對應的字符所在的位置將所有ch放在一個字符串中。文件f2看起來有點像:
@SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50
TTGCCTGCCTATCATTTTAGTGCCTGTGAGGTGGAGATGTGAGGATCAGT
+SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50
hhhhhhhhhhghhghhhhhfhhhhhfffffeee[X]b[d[ed`[Y[^Y
我想也許使用itertools的配對起來。我還需要用T,G,C和A來修改行,這樣如果ASCII碼小於20,相應的字符就會被N替換。正如我之前提到的,我只需要知道哪些工具會做最適合的工作,所有的建議和提示都會受到讚賞。
我曾嘗試:
for cha in g:
g.replace(str(cha), ch)
print(g)
但是,它打印回到初始行。
編輯: 我已經解決了我的問題,其序列,但我需要知道如何配對值...
for cha in g:
char= ord(cha)
char= int(char)
ch= str(char-33)
mylist.append(ch)
mylist=','.join(mylist)
f1.write('%s\n' %mylist)
編輯: 我試圖寫的有點:
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
burp = random.randrange(0, 100000000000)
f1 = open(path to file)
f3=open(path to file3, 'w+')
for line, next_line in pairwise(f1):
if re.match ('[AGTCN]{5}', line):
for ch in next_line:
if ch<str('20'):
for ch in line:
line.replace(ch,'N')
f3.write('%s' %line)
else:
if re.match(r'\d{1,1}', line):
line=''
f3.write('%s' %line)
else:
f3.write('%s' %line)
但是,我想知道如何考慮兩條線上的分數和位置之間的','。眼下輸出有二號線,不修改或什麼...
編輯: 現在,我只需要找到N個實際上是在第二行基於ASCII碼「代替」的方式得分由我最近的編輯。
你的輸入/輸出是如何相關的? –
@Jon Clements我的輸入是給定的文本,我的程序採用TTGCC ...行,如果匹配,跳過2行,它給出hhhh ...行並將其附加到列表中(unilist),其中每個元素被採用並且ascii代碼返回每個字符。在這一點上,我只是想知道我能以哪種方式將第二和第四條線組合在一起......只是可能有幫助的模塊......謝謝,我希望我很清楚。 – Fabien
目前還不清楚你在問什麼或想做什麼。 – msnider