Problem mit hinzufügen von Elementen in Array

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Freumel
User
Beiträge: 69
Registriert: Donnerstag 25. Januar 2018, 13:47

Hallo zusammen,

Ich versuche gerade ein Programm zu schreiben indem ich für einen Text verschiedene Strings erstelle.
Als erstes versuche ich einen "Satz-String" und einen "Wort-String" zu erstellen in Form von
Satz[Satznummer] und Wort[Satznummer][Wortnummer]

Der Bisherige Code:

Code: Alles auswählen

text = 'Das ist ein Text. Es sollen Sätze und Wörter getrennt werden. Aber irgendwie klappt es nicht'
satz=text.split('.')

wort=[]
wort.append(satz[0].split())
wort.append(satz[1].split())
wort.append(satz[2].split())

print satz
print wort

Ausgabe:
['Das ist ein Text', ' Es sollen Sätze und Wörter getrennt werden', ' Aber irgendwie klappt es nicht']
[['Das', 'ist', 'ein', 'Text'], ['Es', 'sollen', 'Sätze', 'und', 'Wörter', 'getrennt', 'werden'], ['Aber', 'irgendwie', 'klappt', 'es', 'nicht']]
Hier ist die Ausgabe tatsächlich wie gewünscht.
Ich möchte dies aber in eine Schleife einbinden:

Code: Alles auswählen

text = 'Das ist ein Text. Es sollen Sätze und Wörter getrennt werden. Aber irgendwie klappt es nicht'
satz=text.split('.')

for i in range(0,len(satz)):
	wort=[]
	wort.append(satz[i].split())

print satz
print wort
Ausgabe:
['Das ist ein Text', ' Es sollen Sätze und Wöb6rter getrennt werden', ' Aber irgendwie klappt es nicht']
[['Aber', 'irgendwie', 'klappt', 'es', 'nicht']]
Ich sehe aber keinen Grund warum die ersten beiden Sätze nicht mit im Array sind.

Kann mir hier jemand weiterhelfen?
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich sehe da einen gewichtigen Grund, warum die ersten Sätze nicht in der Ergebnisliste sind: Du erzeugst in jedem Schleifendurchgang eine neue Liste!

Über einen Index iterieren macht man nicht, weil man auch direkt über die Elemente der Liste gehen kann. Listen werden üblicherweise als Mehrzahl des Einzelelements benannt (woerter, saetze):

Code: Alles auswählen

text = 'Das ist ein Text. Es sollen Sätze und Wörter getrennt werden. Aber irgendwie klappt es nicht'
saetze = text.split('.')
woerter = []
for satz in saetze:
	woerter.append(satz.split())

print saetze
print woerter
oder statt der for-Schleife eine Liste-Comprehension:

Code: Alles auswählen

woerter = [satz.split() for satz in saetze]
Freumel
User
Beiträge: 69
Registriert: Donnerstag 25. Januar 2018, 13:47

Ja ich ärgere mich gerade auch!
Mir ist es gerade aufgefallen.

Danke für die Hilfe - ist erledigt.
Antworten