Seite 1 von 1
Wie vergleiche ich Zeichen
Verfasst: Donnerstag 22. Februar 2007, 22:11
von richard5579
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;
Verfasst: Donnerstag 22. Februar 2007, 22:21
von Rebecca
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?
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?
Verfasst: Donnerstag 22. Februar 2007, 23:07
von 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.
Re: Wie vergleiche ich Zeichen
Verfasst: Freitag 23. Februar 2007, 07:36
von gerold
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

Verfasst: Freitag 23. Februar 2007, 12:37
von 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.