EDIT ganzer Post, um freiere des Problems zu sein:Was liefert .read() in Python?
s = "GATATATGCATATACTT"
t = "ATAT"
for i in range(len(s)):
if t == s[i:i+len(t)]:
print i+1,
So ist der Zweck des Programms oben ist durch die lange Reihe von DNA (s) mit der kurzen Linie von DNA zu scannen (t), um herauszufinden, an welchen Positionen auf s, das t übereinstimmt. Die Ausgabe des obigen Codes ist:
2 4 10 # Dies sind im Grunde die Indexnummern von Zeichenfolge s, die Zeichenfolge t übereinstimmt. aber wie im obigen Code zu sehen ist, ist es i + 1, eine 1-basierte Nummerierung zu geben.
Das Problem, das ich habe, ist, dass, wenn ich versuche, den Code zu ändern, um es die Werte für s und t durch eine Datei zu erhalten, funktioniert die readline() -Funktion für mich nicht. Die Datei motif.txt enthält zwei DNA-Stränge, eine in jeder Zeile.
with open('txt/motif.txt', 'r') as f:
s = f.readline()
t = f.readline()
for i in range(len(s)):
if t == s[i:i+len(t)]:
print i+1,
Also wird dieser Code auf der anderen Seite nichts ausgeben. Aber wenn ich t:
t = f.readline().strip()
Dann das Programm gibt das gleiche Ergebnis wie im ersten Beispiel.
Also ich hoffe, dies hat die Dinge klarer gemacht. Meine Frage ist also, wenn readline() eine Zeichenkette zurückgibt, warum funktioniert mein Programm in Beispiel 2 nicht auf die gleiche Weise wie im ersten Beispiel?
Wie ist Ihr Code * wirklich * eingerückt? Was du hier hast, ist ungültig. – chepner
Sie müssen auch zeigen, was Ihre Eingabe ist (der Inhalt von 'txt/motfi.txt') und was die erwartete Ausgabe ist. – chepner
Und ja, 'readline' gibt einfach die nächste Textzeile aus dem gegebenen Dateiobjekt zurück. – chepner