Wo ist welcher Buchstabe

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
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

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.
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

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
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!?
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

@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?
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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"
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Danke Leute, ich denke damit dürfte ich es hinkriegen.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

@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.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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)
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Juhu, danke! Daran hab ich gar nicht gedacht. Mit diesem thread hab ich nen riesen schritt nach vorne gemacht!
Antworten