我一直在开发一个程序,该程序将一行中的字符(hhhhhhhhhhhhghhhhhfhhhhhffffffeee[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)
但是,我想知道如何在两条线的分数和 ch 位置之间考虑“,”。现在输出有第二行,没有修改或任何东西......
编辑: 现在,我只需要根据我最新编辑获得的 ascii 分数找到一种方法,将 N 在第二行中实际“替换”。