Seite 1 von 1

Wo ist welcher Buchstabe

Verfasst: Montag 17. September 2007, 16:31
von Imperator
Hey Leute,

ich schreibe gerade ein Programm für das es nötig ist festzustellen, wo in einem string ein Buchstabe ist. Allerdings muss es nicht die genaue Position sein, sondern man darf Buchstabenketten durch ein + trennen.
Beispiel: Hallo+ICH+HEISSE+IMPERATOR
Nun muss das programm jeden dieser abschnitte an einen Namen binden und außerdem die Reihenfolge bestimmen.
Aber geht das überhaupt und wenn ja, würde ich mich über Hilfe freuen.

Re: Wo ist welcher Buchstabe

Verfasst: Montag 17. September 2007, 16:42
von helduel
Moin,
Imperator hat geschrieben:Hey Leute,

ich schreibe gerade ein Programm für das es nötig ist festzustellen, wo in einem string ein Buchstabe ist. Allerdings muss es nicht die genaue Position sein, sondern man darf Buchstabenketten durch ein + trennen.
Beispiel: Hallo+ICH+HEISSE+IMPERATOR
Nun muss das programm jeden dieser abschnitte an einen Namen binden und außerdem die Reihenfolge bestimmen.
Aber geht das überhaupt und wenn ja, würde ich mich über Hilfe freuen.
ich versteh zwar nicht, was genau du willst, aber die Position von einem bestimmten Buchstaben in einem String bekommst du mit den String-Methoden 'find' oder 'index'.

Die split-Methode kann für dich interessant sein, um an die Wörter zwischen den Plus heranzukommen.

Einfach mal hier schauen: http://docs.python.org/lib/string-methods.html

Gruß,
Manuel

Verfasst: Montag 17. September 2007, 16:44
von BlackJack
@Imperator: Irgendwie ist der erste Satz total sinnlos. Der Rest des Beitrags ist auch nicht klarer.

Vielleicht könntest Du das Problem auch mal so erklären das auch jemand der nicht Deine Gedanken lesen kann, etwas mit der Frage anfangen kann!?

Verfasst: Montag 17. September 2007, 17:01
von Imperator
@helduel: das könnte helfen, danke
@BlackJack: Ich versuche es anders zu erklären. Man wird nach einer Eingabe gefragt. Statt den Leerzeichen wird dabei '+' verwendet.
Hier nochmal das Beispiel: HALLO+ICH+HEISSE+IMPERATOR
Im Beispiel ist HALLO der erste Abschnit, ICH der zweite und soweiter. Nun sol das programm erkennen was der erste, der zweite ... Abschnitt ist, und jeweils an einen Namen binden. War das so verständlicher?

Verfasst: Montag 17. September 2007, 17:39
von schlangenbeschwörer
Hi!
Mit [String].split([String]) oder string.split([String], [String]) kannst du Zeichenketten trennen.
Aber was meinst du mit "an einen Namen binden"? Wenn du eine Feste Anzahl an Wörtern hast und dann das erste an eine Variable "wort1" oder so binden willst, kann ich dir davon nur abraten. Zum einen ist es unnötige Schreibarbeit und außerdem überhaupt nicht dynamisch. Besser wäre, einach die Liste, die die split-Funktion zurückgibt, zu verwenden, oder, wenn du Namen brauchst, diese in ein Dict umzuwandeln, beidem du dann als Keys deine Namen nehmen kannst.
Bsp:

Code: Alles auswählen

s = "Was+auch+immer"
d = {}
for nr, wort in enumerate(s.split("+")):
    d[str(nr)] = wort
print d
Ausgabe:

Code: Alles auswählen

{'1': 'auch', '0': 'Was', '2': 'immer'}
Gruß, jj

Verfasst: Montag 17. September 2007, 18:26
von Joghurt
Warum nicht einfach

Code: Alles auswählen

satz = "Was+auch+immer"
woerter = satz.split("+")
print woerter[0] # Was
print woerter[2] # immer
print woerter # [Was, auch, immer]
@Imperator: meinst du sowas?(ungetestet)

Code: Alles auswählen

text = "Die+ist+ein+doofer+Test"
print "Ein 'e' befindet sich:"
for n, wort in text.split("+"):
    if "e" in wort:
        print "Im %i.Wort an %iter Stelle" % (n, wort.index("e")) # achtung, findet nur das erste "e"

Verfasst: Montag 17. September 2007, 19:17
von schlangenbeschwörer
Das hab ich ja auch beschrieben, nur wollte ich noch ein anderes Bsp. bringen, da mich das "an einen Namen binden" etwas gestört hat.

Verfasst: Dienstag 18. September 2007, 13:44
von Imperator
Danke Leute, ich denke damit dürfte ich es hinkriegen.

Verfasst: Dienstag 18. September 2007, 15:20
von Imperator
@Imperator: meinst du sowas?(ungetestet)

Code: Alles auswählen

text = "Die+ist+ein+doofer+Test"
print "Ein 'e' befindet sich:"
for n, wort in text.split("+"):
    if "e" in wort:
        print "Im %i.Wort an %iter Stelle" % (n, wort.index("e")) # achtung, findet nur das erste "e"
[/quote]

Nein, es geht um was anderes. Und jetzt bräuchte ich doch nochmal Hilfe, und zwar habe ich

Code: Alles auswählen

Laenge = len(Abschnitte[0])
gemacht. Außerdem die Variable

Code: Alles auswählen

Freiraum = ''
. Nun eine print Anweisung:

Code: Alles auswählen

print (Freiraum * Laenge + Text)
Aber es wird nicht mal ein Freiraum gelassen bevor der text ausgegeben wird. Aber es kommt auch keine Fehlermeldung.

Verfasst: Dienstag 18. September 2007, 16:14
von Joghurt
Dein Freiraum ist auch ein Lerstring mit Länge 0...

Code: Alles auswählen

freiraum = ' '
(BTW: Lies dir mal PEP 8 auch, Variablennamen sollten keine Großbuchstaben enthalten. Das ist natürlich kein Fehler, widerspricht nur der Styleguide)

Verfasst: Dienstag 18. September 2007, 16:25
von Imperator
Juhu, danke! Daran hab ich gar nicht gedacht. Mit diesem thread hab ich nen riesen schritt nach vorne gemacht!