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!)
String vergleichen
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():
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.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Unabhaengig von Gross-/Kleinschreibung wird es, wenn du vorruebergehend alles nach nur-Kleinschreibung konvertierst (mit lower):
Hier wird z.B. "Welt" und "wElT" gefunden und dessen Position im Test-String zurueckgegeben.
Code: Alles auswählen
>>> test = "HalloWelt!"
>>> suche = "welt"
>>> test2 = "Guten Tag wElT"
>>> test.lower().find(suche)
5
>>> test2.lower().find(suche)
10
>>>
-
- User
- Beiträge: 31
- Registriert: Freitag 31. März 2006, 14:15
Danke!Rebecca hat geschrieben:Unabhaengig von Gross-/Kleinschreibung wird es, wenn du vorruebergehend alles nach nur-Kleinschreibung konvertierst (mit lower):Hier wird z.B. "Welt" und "wElT" gefunden und dessen Position im Test-String zurueckgegeben.Code: Alles auswählen
>>> test = "HalloWelt!" >>> suche = "welt" >>> test2 = "Guten Tag wElT" >>> test.lower().find(suche) 5 >>> test2.lower().find(suche) 10 >>>
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
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Der urspruengliche Text wird ja gar nicht geandert. (Probier's mal aus und verstehe es!)boostpy2005 hat geschrieben:1. der Rest wollte ich nicht durch die Umwandelung geändert werden.
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?boostpy2005 hat geschrieben:3. ich brauche nicht nur finden, sondern auch gefundene löschen
Ansonsten waeren vielleicht Regular Expressions was fuer dich.
-
- User
- Beiträge: 31
- Registriert: Freitag 31. März 2006, 14:15
ich habe re wie früher verwendet. Aber vorher muss ich "\\" durch "/" ersetzen. So geht es!
Danke Rebecca & Buell
Code: Alles auswählen
import re
subString =subString.replace("\\", "/")
aString = aString.replace("\\", "/")
matchObj = re.compile(subString, re.I)
matchObj.sub("", aString)