returns 整个列表的第一个项目的位置而不是每个项目的位置?
returns the location of the first item for the whole list instead of each item's location?
此代码应该读取基因组的文本文件,并给定一个模式,应该 return 该模式出现了多少次,以及它的位置。
相反,它 return 只是出现的次数和第一次出现的位置。
this is an example of running the code 而不是 return 出现 35 次的位置,它 return 第一个位置 35 次。
# open the file with the original sequence
myfile = open('Vibrio_cholerae.txt')
# set the file to the variable Text to read and scan
Text = myfile.read()
# insert the pattern
Pattern = "TAATGGCT"
PatternLocations = []
def PatternCount(Text,Pattern):
count = 0
for i in range (len(Text)-len(Pattern)+1):
if Text [i:i+len(Pattern)] == Pattern:
count +=1
PatternLocations.append(Text.index(Pattern))
return count
# print the result of calling PatternCount on Text and Pattern.
print (f"Number of times the Pattern is repeated: {PatternCount(Text,Pattern)} time(s).")
print(f"List of Pattern locations: {PatternLocations}")
你做到了
PatternLocations.append(Text.index(Pattern))
.index
带有单个参数确实
Return the lowest index in S where substring sub is found
你应该做
PatternLocations.append(i)
因为你自己找到位置而不使用索引而是使用
if Text [i:i+len(Pattern)] == Pattern:
我建议您使用 re
.
而不是在整个文本中使用
这是一个片段:
from re import finditer
for match in finditer(pattern, Text):
print(match.span(), match.group())
从我使用的自定义示例 (pattern='livraison'
) 中,它返回了类似的内容:
>>>(18, 27) livraison
>>>(80, 89) livraison
>>>(168, 177) livraison
>>>(290, 299) livraison
此代码应该读取基因组的文本文件,并给定一个模式,应该 return 该模式出现了多少次,以及它的位置。 相反,它 return 只是出现的次数和第一次出现的位置。 this is an example of running the code 而不是 return 出现 35 次的位置,它 return 第一个位置 35 次。
# open the file with the original sequence
myfile = open('Vibrio_cholerae.txt')
# set the file to the variable Text to read and scan
Text = myfile.read()
# insert the pattern
Pattern = "TAATGGCT"
PatternLocations = []
def PatternCount(Text,Pattern):
count = 0
for i in range (len(Text)-len(Pattern)+1):
if Text [i:i+len(Pattern)] == Pattern:
count +=1
PatternLocations.append(Text.index(Pattern))
return count
# print the result of calling PatternCount on Text and Pattern.
print (f"Number of times the Pattern is repeated: {PatternCount(Text,Pattern)} time(s).")
print(f"List of Pattern locations: {PatternLocations}")
你做到了
PatternLocations.append(Text.index(Pattern))
.index
带有单个参数确实
Return the lowest index in S where substring sub is found
你应该做
PatternLocations.append(i)
因为你自己找到位置而不使用索引而是使用
if Text [i:i+len(Pattern)] == Pattern:
我建议您使用 re
.
这是一个片段:
from re import finditer
for match in finditer(pattern, Text):
print(match.span(), match.group())
从我使用的自定义示例 (pattern='livraison'
) 中,它返回了类似的内容:
>>>(18, 27) livraison
>>>(80, 89) livraison
>>>(168, 177) livraison
>>>(290, 299) livraison