Wie vergleiche ich Zeichen

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
richard5579
User
Beiträge: 2
Registriert: Donnerstag 7. Dezember 2006, 22:32

Hallo
Habe schon lange nicht mehr die Gelegenheit gehabt zu Programmieren.
Leider bin ich ein alter C/C++ Hase und bräuchte ein bisschen Hilfe.
Ich wüsste gerne wie man Zeichen miteinnander vergleicht.
Ich habe es so probiert wie in C++ mit dem == Operator aber der geht nicht da er nur bool - Werte vergleicht.Ich habe es so probiert:

Code: Alles auswählen

s = "C:\ Das ist ein Pfadname";
while (s[x] != None):
if(s[x] == '\'):
 #dann würde ich noch gerne in den String bei '\' ein weiteres '\' hinzufügen
 #nur leider weiss ich nicht wie das möglich  ist könntet ihr mir dabei bitte          
else:
x = x+1;

Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dein Fehler muss woanders liegen. == vergleicht nicht nur Bool-Werte!

Code: Alles auswählen

>>> "a"=="a"
True
>>> "a"=="b"
False
>>> "hallo"=="hallo"
True
>>> "hallo"=="welt"
False
>>>
Und kennst du replace?

Code: Alles auswählen

>>> "blabla".replace("b", "xy")
'xylaxyla'
EDIT:
Ach, und was willst du ueberhaupt bezwecken? Denn schon die Zuweisung s="C:\ bla" ist problematisch. In dem Fall hast du Glueck, dass nach dem \ ein Leerzeichen folgt, und der \ dadurch nur ein \ ist. Aber bei "C:\trara" ist das \t die Escape-Sequenz fuer TAB. s=r"C:\ bla" ist besser, da werden keine Escape-Sequenzen interpretiert, aber dann brauchst du doch auch keine \ mehr zu ersetzen?
BlackJack

Die Klammern um Bedingungen und Semikola am Zeilenende braucht man bei Python übrigens nicht.

Ausserdem ist das Beispiel nicht korrekt eingerückt und das Syntaxhighlighting sollte sichtbar machen, dass ein einzelner Backslash in einer literalen Zeichenkette offensichtlich nicht funktioniert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo richard5579!

Code: Alles auswählen

s = "C:\\Das ist ein Pfadname"
for char in s:
    if char == "\\":
        print "Es wurde ein Backslash gefunden"
        print "Der erste Backslash findet sich an Position %i" % s.find("\\")

s2 = r"C:\Das ist ein Pfadname"
print s == s2 # Beide Strings sind äquivalent

print repr(s)
print repr(s2)
Der Backslash ist in Python das Zeichen, mit dem man in Strings Sonderzeichen markiert. \t steht z.B. für Tabulator, \n steht für einen Zeilenumbruch. Deshalb sollte/muss man in Strings zwei Backslash schreiben, wenn man einen haben möchte. Außnahme sind Strings, die bei der Zuweisung in ``r""`` eingeschlossen sind. Allerdings muss man darauf achten, dass auch hier kein Backslash am Ende der Zeichenfolge steht.

``print "Ich bin ein Backslash \\"`` gibt einen Backslash aus, da ja wirklich nur ein Backslash in der Zeichenfolge steht.
``print repr("Ich bin ein Backslash \\")`` zeigt zwei Backslashes an, da mit ``repr()`` der Text ausgegeben wird, der zeigt, wie man den Text im Quellcode eingeben müsste.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Wobei man da natürlich auch gleich `str.find()` oder `str.index()` benutzen kann, anstatt über die Zeichen in einer Schleife zu iterieren. :-)

Oder zumindest `enumerate()` benutzen um Einsteiger zu verwirren und `str.find()` nicht noch einmal die Arbeit der Schleife machen zu lassen.
Antworten