Hallo an alle,
Ich habe folgendes Problem: ich arbeite momentan mit der Spracherkennung, was aber mein Problem nicht wirklich deutlicher macht. Also wenn ich etwas sage wird dieser Satz angezeigt. Wenn ich jetzt diesen Satz habe möchte ich dabei aber zum Beispiel nur das 4 Wort oder Buchstaben im Satz haben. Jetzt frage ich mich wie das geht.
Spracheingabe filtern
-
- User
- Beiträge: 13
- Registriert: Montag 8. Juli 2019, 15:58
Für das 4. Wort:
Für das vierte Zeichen (ohne Leerzeichen):
Ich ziehe als Ergebnis das 3. Element, da Python bei 0 zu zählen beginnt.
Code: Alles auswählen
# satz ist dein spracheingabenergebnis
# result ist das, was du haben willst
result = satz.split(" ")[3]
Code: Alles auswählen
result = ""
satzList = list(satz)
for i in range(len(satzList)):
if satzList[i] != " ":
result = result + satzList[i]
result = list(result)[3]
- __blackjack__
- User
- Beiträge: 13927
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@PythonProgrammer2.0: Beim ersten Beispiel könnte man das Aufteilen noch begrenzen.
Das zweite Beispiel ist kein Python. Da sind zwei Sachen drin die man in Python nicht macht. 1. ``for i in range(len(sequence)):`` nur um `i` dann als Index in `sequence` zu verwenden ist ein „anti pattern“ weil man direkt über die Elemente von `sequence` iterieren kann, ohne den unnötigen Umweg über einen Index. 2. Das wiederholte addieren von Teilzeichenketten in einer Schleife ist potentiell sehr ineffizient weil Zeichenketten nicht veränderbar sind und deshalb jedes mal eine neue Zeichenkette erstellt werden muss die aus den beiden alten Zeichenketten zusammenkopiert wird. Idiomatisches Python sammelt die Teilzeichenketten in einer Liste oder verwendet einen Generator/Iterator und fügt sie mit der `join()`-Methode auf Zeichenketten zusammen. Nur das Dein nächster Schritt ist aus der Zeichenkette wieder eine Liste zu machen, also ist das auch etwas das man sich sparen kann.
`satzList` ist kein guter Name. Der hält sich nicht an die Konvention das Namen klein_mit_unterstrichen geschrieben werden und Grunddatentypen gehören nicht in Namen.
Aber man braucht diese Liste auch gar nicht, denn auch eine Zeichenkette kann man indexieren und auch in der letzten Zeile nicht:
Jetzt ohne den unnötigen Index:
Irgendwie hat man da jetzt die `replace()`-Methode nachprogrammiert, in schlechter:
Das zweite Beispiel ist kein Python. Da sind zwei Sachen drin die man in Python nicht macht. 1. ``for i in range(len(sequence)):`` nur um `i` dann als Index in `sequence` zu verwenden ist ein „anti pattern“ weil man direkt über die Elemente von `sequence` iterieren kann, ohne den unnötigen Umweg über einen Index. 2. Das wiederholte addieren von Teilzeichenketten in einer Schleife ist potentiell sehr ineffizient weil Zeichenketten nicht veränderbar sind und deshalb jedes mal eine neue Zeichenkette erstellt werden muss die aus den beiden alten Zeichenketten zusammenkopiert wird. Idiomatisches Python sammelt die Teilzeichenketten in einer Liste oder verwendet einen Generator/Iterator und fügt sie mit der `join()`-Methode auf Zeichenketten zusammen. Nur das Dein nächster Schritt ist aus der Zeichenkette wieder eine Liste zu machen, also ist das auch etwas das man sich sparen kann.
`satzList` ist kein guter Name. Der hält sich nicht an die Konvention das Namen klein_mit_unterstrichen geschrieben werden und Grunddatentypen gehören nicht in Namen.
Aber man braucht diese Liste auch gar nicht, denn auch eine Zeichenkette kann man indexieren und auch in der letzten Zeile nicht:
Code: Alles auswählen
result = ""
satzList = list(satz)
for i in range(len(satzList)):
if satzList[i] != " ":
result = result + satzList[i]
result = list(result)[3]
# ->
result = ""
for i in range(len(satz)):
if satz[i] != " ":
result = result + satz[i]
result = result[3]
Code: Alles auswählen
result = ""
for character in satz:
if character != " ":
result = result + character
result = result[3]
Code: Alles auswählen
result = satz.replace(" ", "")[3]
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware