Seite 1 von 1

String vergleichen

Verfasst: Mittwoch 10. Mai 2006, 08:10
von boostpy2005
Hallo!

ich habe Problem mit dem Stringvergleich.

z.B. aString ="Test\\Me\Mine" & subString = "Test" OR subString "TeSt"
import re
matchObj = re.compile(subString, re.I)
matchObj.sub("", aString) ==> "\\Me"

ganz OK!

Aber wenn subString = "Test\\Me", dann geht überhaupt nichts mehr!
ich vermute, es liegt darin "\\"

Bitte um Hinweis! (Ich wollte den Text entfernen, egal klein oder groß geschrieben, aber den Rest klein & groß beibehalten!)

Verfasst: Mittwoch 10. Mai 2006, 13:41
von Buell
also normalerweise vergleiche ich Strings immer mit dem string Modul siehe hier und dann benutzt man einfach find()...

Falls es Probleme mot den \\ geben sollte, dann schreibe einfach:

aString = r'Test\Me\Mine' anstatt ... "Test\\Me\\Mine" das Ergebnis ist das gleiche, du solltest dann allerdings sicherheitshalber alle Strings so "formatieren" (ich glaube raw-String nennt sich das)

Definition find():
find( s, sub[, start[,end]])
Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.

Verfasst: Mittwoch 10. Mai 2006, 13:59
von Rebecca
Unabhaengig von Gross-/Kleinschreibung wird es, wenn du vorruebergehend alles nach nur-Kleinschreibung konvertierst (mit lower):

Code: Alles auswählen

>>> test = "HalloWelt!"
>>> suche = "welt"
>>> test2 = "Guten Tag wElT"
>>> test.lower().find(suche)
5
>>> test2.lower().find(suche)
10
>>>
Hier wird z.B. "Welt" und "wElT" gefunden und dessen Position im Test-String zurueckgegeben.

Verfasst: Mittwoch 10. Mai 2006, 14:14
von boostpy2005
Rebecca hat geschrieben:Unabhaengig von Gross-/Kleinschreibung wird es, wenn du vorruebergehend alles nach nur-Kleinschreibung konvertierst (mit lower):

Code: Alles auswählen

>>> test = "HalloWelt!"
>>> suche = "welt"
>>> test2 = "Guten Tag wElT"
>>> test.lower().find(suche)
5
>>> test2.lower().find(suche)
10
>>>
Hier wird z.B. "Welt" und "wElT" gefunden und dessen Position im Test-String zurueckgegeben.
Danke!
diese Umwandeltung ist nicht für meinen Fall:
1. der Rest wollte ich nicht durch die Umwandelung geändert werden.
2. weiß ich nicht, ob es "\" oder "/" vorhanden sind.
3. ich brauche nicht nur finden, sondern auch gefundene löschen

Verfasst: Mittwoch 10. Mai 2006, 14:59
von Rebecca
boostpy2005 hat geschrieben:1. der Rest wollte ich nicht durch die Umwandelung geändert werden.
Der urspruengliche Text wird ja gar nicht geandert. (Probier's mal aus und verstehe es!)
boostpy2005 hat geschrieben:3. ich brauche nicht nur finden, sondern auch gefundene löschen
Du weisst, an welcher Position du anfangen musst zu loeschen, und kannst ausrechnen, an welcher Stelle du aufhoren musst, da in diesem Fall ja die Laenge des Suchstrings bekannt ist. Wo ist das Problem?

Ansonsten waeren vielleicht Regular Expressions was fuer dich.

gelöst, aber nicht elegant:-(

Verfasst: Mittwoch 10. Mai 2006, 15:08
von boostpy2005
ich habe re wie früher verwendet. Aber vorher muss ich "\\" durch "/" ersetzen. So geht es!

Code: Alles auswählen

import re 
subString =subString.replace("\\", "/")
aString = aString.replace("\\", "/")
matchObj = re.compile(subString, re.I) 
matchObj.sub("", aString)  
Danke Rebecca & Buell