0
我要匹配字符串中所有出現的字符串,返回所有比賽首發的位置:輸入數據的Python的比賽的所有子和逆轉串
例如:
2 4
AC
TGGT
4 25
CATA
TCATATGCAAATAGCTGCATACCGA
0 0 ## to end the file
我想做到這一點沒有在這樣的行中使用數字,因爲它看起來並不是真的必要;(但它們仍然在輸入文件中)
而且我不知道這段代碼究竟出了什麼問題,但它仍然保持打印(無限循環)在輸出文件上打印0。
#!/usr/bin/env python
import sys
from operator import itemgetter
def find_all(a_str, sub):
start = 0
while True:
start = a_str.find(sub, start)
if start == -1: return
yield start
start += len(sub)
if __name__ == '__main__':
testnum=0
input_file = open(sys.argv[1])
#input_lines=input_file.split("\n")
output_file = open(sys.argv[2],"w")
while True:
testnum+=1
values_raw = input_file.readline()
#values_raw=raw_input() ##rubish
values=values_raw.split()
flag=0
for element in values:
if element == "0":
break
string1=str(input_file.readline())
string2=str(input_file.readline())
lista = find_all(string2,string1)
output_file.write("\nTeste "+str(testnum)+"\nocorrencia direta: ")
for item in lista:
output_file.write(str(item)+" ")
#reversed search
string1=string1[::-1]
lista = find_all(string2,string1)
output_file.write("\nTeste "+str(testnum)+"\nocorrencia inversa complementar: ")
for item in lista:
output_file.write(str(item)+" ")
if ((len(string1)==0)):
break
粘貼代碼時,我不小心刪除的字符串1和字符串線//我匹配的原件和對反式比賽,但由於代碼是我想我不應該張貼它也幾乎是相同的。
'如果元素== 0'始終是假的。 'element'是一個'str',而不是一個數字。此外,'string1'和'string2'永遠不會被分配 - 它們在這段代碼中沒有綁定。 – Elazar
我不小心刪除了他們原來的帖子,但我相信我所做的讀取文件是錯誤的... – Mansueli