python 中的复杂正则表达式匹配
complex regex matches in python
我有一个包含以下数据的 txt 文件:
chrI
ATGCCTTGGGCAACGGT...(多行)
chrII
AGGTTGGCCAAGGTT...(多行)
我想先找到'chrI',然后遍历ATGC的多行,直到找到第x个字符。然后我想打印第 x 个字符,直到第 y 个字符。我一直在使用正则表达式,但一旦找到包含 chrI 的行,我就不知道如何继续迭代以找到第 x 个字符。
这是我的代码:
for i, line in enumerate(sacc_gff):
for match in re.finditer(chromo_val, line):
print(line)
for match in re.finditer(r"[ATGC]{%d},{%d}\Z" % (int(amino_start), int(amino_end)), line):
print(match.group())
变量的含义:
chromo_val
= chrI
amino_start
=(我的程序找到的一些起点)
amino_end
=(我的程序找到了一些终点)
注意:amino_start
和amino_end
需要变量形式。
如果我能为您澄清任何问题,请告诉我,谢谢。
看起来您正在使用 fasta 数据,所以我会考虑到这一点提供答案,但如果不是,您仍然可以使用 sub_sequence 选择部分。
fasta_data = {} # creates an empty dictionary
with open( fasta_file, 'r' ) as fh:
for line in fh:
if line[0] == '>':
seq_id = line.rstrip()[1:] # strip newline character and remove leading '>' character
fasta_data[seq_id] = ''
else:
fasta_data[seq_id] += line.rstrip()
# return substring from chromosome 'chrI' with a first character at amino_start up to but not including amino_end
sequence_string1 = fasta_data['chrI'][amino_start:amino_end]
# return substring from chromosome 'chrII' with a first character at amino_start up to and including amino_end
sequence_string2 = fasta_data['chrII'][amino_start:amino_end+1]
fasta 格式:
>chr1
ATTTATATATAT
ATGGCGCGATCG
>chr2
AATCGCTGCTGC
由于您正在使用格式如下的 fasta 文件:
>Chr1
ATCGACTACAAATTT
>Chr2
ACCTGCCGTAAAAATTTCC
并且是生物信息学专业的我猜你会经常操纵序列我建议安装名为 FAST 的 perl 包。一旦安装了它以获得每个序列的 2-14 个字符,您可以这样做:
fascut 2..14 fasta_file.fa
这是最近的 publication for FAST and github,其中包含用于在命令行上操作分子序列数据的完整工具箱。
我有一个包含以下数据的 txt 文件:
chrI
ATGCCTTGGGCAACGGT...(多行)
chrII
AGGTTGGCCAAGGTT...(多行)
我想先找到'chrI',然后遍历ATGC的多行,直到找到第x个字符。然后我想打印第 x 个字符,直到第 y 个字符。我一直在使用正则表达式,但一旦找到包含 chrI 的行,我就不知道如何继续迭代以找到第 x 个字符。
这是我的代码:
for i, line in enumerate(sacc_gff):
for match in re.finditer(chromo_val, line):
print(line)
for match in re.finditer(r"[ATGC]{%d},{%d}\Z" % (int(amino_start), int(amino_end)), line):
print(match.group())
变量的含义:
chromo_val
= chrI
amino_start
=(我的程序找到的一些起点)
amino_end
=(我的程序找到了一些终点)
注意:amino_start
和amino_end
需要变量形式。
如果我能为您澄清任何问题,请告诉我,谢谢。
看起来您正在使用 fasta 数据,所以我会考虑到这一点提供答案,但如果不是,您仍然可以使用 sub_sequence 选择部分。
fasta_data = {} # creates an empty dictionary
with open( fasta_file, 'r' ) as fh:
for line in fh:
if line[0] == '>':
seq_id = line.rstrip()[1:] # strip newline character and remove leading '>' character
fasta_data[seq_id] = ''
else:
fasta_data[seq_id] += line.rstrip()
# return substring from chromosome 'chrI' with a first character at amino_start up to but not including amino_end
sequence_string1 = fasta_data['chrI'][amino_start:amino_end]
# return substring from chromosome 'chrII' with a first character at amino_start up to and including amino_end
sequence_string2 = fasta_data['chrII'][amino_start:amino_end+1]
fasta 格式:
>chr1
ATTTATATATAT
ATGGCGCGATCG
>chr2
AATCGCTGCTGC
由于您正在使用格式如下的 fasta 文件:
>Chr1
ATCGACTACAAATTT
>Chr2
ACCTGCCGTAAAAATTTCC
并且是生物信息学专业的我猜你会经常操纵序列我建议安装名为 FAST 的 perl 包。一旦安装了它以获得每个序列的 2-14 个字符,您可以这样做:
fascut 2..14 fasta_file.fa
这是最近的 publication for FAST and github,其中包含用于在命令行上操作分子序列数据的完整工具箱。