Ich bin ein Python Anfänger und ich versuche, die Datei example.txt Absatz für Absatz mit den Iterator und nächsten Methoden zu lesen. Das Problem ist, ich kann nicht herausfinden, wie Zeile für Zeile in der nächsten Methode zu lesen, ohne eine for-Schleife oder Zeile = next (it). Jede Hilfe würde sehr geschätzt werden. Hier ist, was ich bis jetzt habe.Python, wie man Text Absatz nach Absatz liest
class ByParagraph:
def __init__(self, text):
self.text = text
def __iter__(self):
return self
par = ""
def __next__(self):
par = ""
if (I still need to decide how to stop the iterations):
raise StopIteration
if str(self.text).isspace():
return par.strip()
else:
return ' '.join([par, str(self.text)])
with open("example.txt") as f:
for par in ByParagraph(f):
print('BEGIN PAR' + par + 'END PAR')
Können Sie beschreiben, wie es schief geht? Ich würde mir vorstellen, dass Sie wahrscheinlich Zeilen in "__next__" lesen möchten, bis Sie eine Zeile treffen, die nur '\ n' enthält. Es könnte tatsächlich einfacher sein, einfach eine Generatorfunktion zu verwenden, oder ist es an der Zeit, Iteratoren zu lernen? –
'nltk' hat diese Funktionalität integriert – inspectorG4dget
@PaulRooney ja, das ist genau das, was ich versuche zu tun. Lies die Zeilen in __next __ Ich benutze immer eine Schleife, aber ich glaube nicht, dass ich das in der Methode machen muss ... und ja, das ist der Punkt, aber ich habe viele Dinge ohne Ergebnis ausprobiert. – Sofia